1. Einführung
In diesem Codelab erstellen Sie ein Einmalkaufprodukt und fügen ein Vorbesteller-Angebot für das Produkt hinzu.
Hinweis: Bevor Sie mit diesem Codelab beginnen, müssen Sie Zugriff auf die Vorbestellungsfunktion anfordern. Füllen Sie dazu das EAP-Antragsformular für Einmalkaufprodukte aus.
Zielgruppe
Dieses Codelab richtet sich an Android-App-Entwickler, die mit Einmalkaufprodukten vertraut sind und erfahren möchten, wie sie ihren Einmalkaufprodukten Vorbesteller-Angebote hinzufügen können.
Voraussetzungen
Wenn Sie noch keine Erfahrung mit Einmalkaufprodukten haben, empfehlen wir Ihnen, das Codelab Mit regionalen Produktpreisen neue Märkte erschließen durchzuarbeiten.
Lerninhalte
- Verwendung der Google Play Console zum Erstellen von Vorbesteller-Angeboten für Ihre Einmalkaufprodukte
- Verwendung der Play Billing Library APIs zum Abfragen von Einmalkaufprodukten und den entsprechenden Details zu Vorbesteller-Angeboten
Voraussetzungen
- Zugriff auf die Google Play Console mit einem Entwicklerkonto Wenn Sie kein Entwicklerkonto haben, müssen Sie eines erstellen.
- Eine Beispiel-App für dieses Codelab, die Sie von GitHub herunterladen können.
- Android Studio.
2. Beispiel-App erstellen
In diesem Codelab wird anhand einer Android-Beispiel-App gezeigt, wie Sie Einmalkaufprodukte verwalten. Die Beispiel-App ist eine voll funktionsfähige Android-App mit dem vollständigen Quellcode, die folgende Aspekte veranschaulicht:
- Integration der App in die Play Billing Library
- Abrufen von Einmalkaufprodukten und den zugehörigen Vorbesteller-Angeboten
- Ausführen von Kaufprozessen für regionale Preise
Im folgenden Demovideo sehen Sie, wie die Beispiel-App nach der Bereitstellung und Ausführung aussieht und sich verhält.
Wenn Sie bereits mit Einmalkaufprodukten und der Play Billing Library (PBL) vertraut sind, können Sie die Beispiel-App herunterladen und ausprobieren.
Voraussetzungen
Bevor Sie die Beispiel-App erstellen und bereitstellen, führen Sie die folgenden Schritte aus:
- Erstellen Sie ein Google Play Console-Entwicklerkonto. Wenn Sie bereits ein Entwicklerkonto haben, überspringen Sie diesen Schritt.
- Erstellen Sie in der Play Console eine neue App. Beim Erstellen einer App können Sie einen beliebigen App-Namen für die Beispiel-App angeben.
- Installieren Sie Android Studio.
Build
Ziel dieses Build-Schritts ist es, eine signierte Android App Bundle-Datei der Beispiel-App zu generieren.
So generieren Sie das Android App Bundle:
- Laden Sie die Beispiel-App von GitHub herunter.
- Erstellen Sie die Beispiel-App. Ändern Sie vor dem Erstellen den Paketnamen der Beispiel-App und erstellen Sie sie dann. Wenn Sie in Ihrer Play Console Pakete anderer Apps haben, muss der Paketname, den Sie für die Beispiel-App angeben, eindeutig sein.
Hinweis: Beim Erstellen der Beispiel-App wird nur eine APK-Datei erstellt, die Sie für lokale Tests verwenden können. Beim Ausführen der App werden jedoch keine Produkte und Preise abgerufen, da die Produkte in der Play Console nicht konfiguriert wurden. - Generieren Sie ein signiertes Android App Bundle.
Im nächsten Schritt laden Sie das Android App Bundle in die Google Play Console hoch.
3. Einmalkaufprodukt mit Vorbestellung in der Play Console erstellen
Wenn Sie in der Google Play Console Einmalkaufprodukte erstellen möchten, benötigen Sie eine App in der Play Console. Erstellen Sie eine App in der Play Console und laden Sie dann das zuvor erstellte signierte App Bundle hoch.
App erstellen
So erstellen Sie eine App:
- Melden Sie sich mit Ihrem Entwicklerkonto in der Google Play Console an.
- Klicken Sie auf App erstellen. Die Seite App erstellen wird geöffnet.
- Geben Sie einen App-Namen, die Standardsprache und andere Details zur App ein.
- Klicken Sie auf App erstellen. Dadurch wird eine App in der Google Play Console erstellt.
Jetzt können Sie das signierte App Bundle der Beispiel-App hochladen.
Signiertes App Bundle hochladen
- Laden Sie das signierte App Bundle in den internen Test-Track der Google Play Console hoch. Erst nach dem Hochladen können Sie die Monetarisierungsfunktionen in der Play Console konfigurieren.
- Klicken Sie auf Testen und veröffentlichen > Test > Interner Release > Neuen Release erstellen.
- Geben Sie einen Release-Namen ein und laden Sie die signierte APK-Datei hoch.
- Klicken Sie auf Weiter und dann auf Speichern und veröffentlichen.
Jetzt können Sie die Einmalkaufprodukte erstellen.
Einmalkaufprodukt erstellen
Erstellen Sie nun das Einmalkaufprodukt, das Nutzer kaufen sollen.
- Öffnen Sie die Beispiel-App in der Google Play Console und rufen Sie Mit Google Play monetarisieren > Produkte > Einmalkaufprodukte auf.
- Klicken Sie auf Einmalkaufprodukt erstellen.
- Geben Sie die folgenden Produktdetails ein:
- Produkt-ID:Geben Sie eine eindeutige ID ein. Beispiel:
upcoming_movie_1. - (Optional) Tags:Fügen Sie relevante Tags hinzu.
- Name:Geben Sie einen Produktnamen ein. Beispiel:
Product Movie. - Beschreibung:Geben Sie eine Produktbeschreibung ein. Beispiel:
Product Description. - (Optional) Symbolbild hinzufügen:Laden Sie ein Symbol hoch, das Ihr Produkt darstellt.
- Produkt-ID:Geben Sie eine eindeutige ID ein. Beispiel:
- Klicken Sie auf Weiter.
- Fügen Sie eine Kaufoption hinzu und konfigurieren Sie die regionale Verfügbarkeit. Für ein Einmalkaufprodukt ist mindestens eine Kaufoption erforderlich, die definiert, wie die Berechtigung gewährt wird, sowie den Preis und die regionale Verfügbarkeit. Für dieses Codelab fügen wir die Standardoption Kaufen für das Produkt hinzu.Geben Sie im Abschnitt Kaufoption die folgenden Details ein:
- Kaufoptions-ID:Geben Sie eine eindeutige ID ein. Beispiel:
buy-movie. - Kauftyp:Wählen Sie Kaufen aus.
- (Optional) Tags:Fügen Sie Tags hinzu, die speziell für diese Kaufoption gelten.
- Optional: Klicken Sie auf Erweiterte Optionen , um die erweiterten Optionen zu konfigurieren. Für dieses Codelab können Sie die Konfiguration der erweiterten Optionen überspringen.
- Kaufoptions-ID:Geben Sie eine eindeutige ID ein. Beispiel:
- Als Nächstes müssen Sie die regionale Verfügbarkeit und den Preis für die Kaufoption konfigurieren. Bei der regionalen Verfügbarkeit geben Sie die Regionen an, in denen Ihr Produkt verfügbar ist, einschließlich Regionen, in denen Ihre App noch nicht veröffentlicht wurde. Standardmäßig ist eine Kaufoption in allen Regionen verfügbar.Klicken Sie im Abschnitt Verfügbarkeit und Preise auf Verfügbarkeit und Zugriff bearbeiten.
- Wählen Sie Als „nicht verfügbar“ festlegen aus.
- Deaktivieren Sie nur das Land
United Statesund klicken Sie dann auf Als „nicht verfügbar“ festlegen. Jetzt ist das Einmalkaufprodukt nur in denUnited Statesverfügbar. - Wählen Sie im Drop-down-Menü Alle Regionen die Option Verfügbare Länder und Regionen aus. Es sollte nur
United Statesangezeigt werden. - Klicken Sie auf das Symbol Preis. Daraufhin wird ein Dialogfeld angezeigt, in dem Sie den Preis festlegen können.
- Geben Sie 10 USD ein und klicken Sie dann auf Speichern.
- Klicken Sie auf Als Entwurf speichern.
Hinweis: Aktivieren Sie die Kaufoption noch nicht. Wir aktivieren sie, nachdem wir das Vorbesteller-Angebot konfiguriert haben. Das liegt daran, dass Sie einer aktiven Kaufoption, deren regionale Verfügbarkeit festgelegt ist, kein Vorbesteller-Angebot hinzufügen können.
Vorbesteller-Angebot hinzufügen
Jetzt fügen Sie ein Vorbesteller-Angebot für die zuvor erstellte Kaufoption „Kaufen“ hinzu. Mit einem Vorbesteller-Angebot können Nutzer Ihren Artikel vor der offiziellen Veröffentlichung kaufen. Vorbesteller-Angebote werden nur für die Kaufoption Kaufen unterstützt und können nur für neue Produkte in einer Region konfiguriert werden.
Das Hinzufügen eines Vorbesteller-Angebots umfasst die folgenden zwei Schritte:
- Bereiten Sie die Kaufoption Kaufen für das Vorbesteller-Angebot vor.
- Fügen Sie das Vorbesteller-Angebot für die Kaufoption hinzu.
Kaufoption „Kaufen“ für das Vorbesteller-Angebot vorbereiten
- Öffnen Sie die Beispiel-App in der Google Play Console und rufen Sie Mit Google Play monetarisieren > Produkte > Einmalkaufprodukte auf.
- Klicken Sie auf der Seite Einmalkaufprodukte für Ihr Produkt (
upcoming_movie_1) auf den Rechtspfeil. Die Seite Einmalkaufprodukt bearbeiten wird geöffnet. - Klicken Sie für die zuvor erstellte Kaufoption
buy-movieauf den Rechtspfeil. Die Seite Kaufoption bearbeiten wird geöffnet. - Klicken Sie auf Verfügbarkeit und Zugriff bearbeiten und wählen Sie dann Als „verfügbar“ festlegen und Nutzern erlauben, Produkte vorzubestellen aus.
- Wählen Sie im Drop-down-Menü Alle Regionen die Option Verfügbare Länder und Regionen aus. Es sollte nur
United Statesangezeigt werden, das Sie zuvor konfiguriert haben. - Wählen Sie das Land aus und klicken Sie dann auf Nur für Vorbestellungen verfügbar.
- Klicken Sie auf Speichern.
Sie haben Ihrer Kaufoption noch kein Vorbesteller-Angebot hinzugefügt. Im nächsten Schritt fügen Sie das Vorbesteller-Angebot hinzu.
Vorbesteller-Angebot hinzufügen
- Öffnen Sie die Beispiel-App in der Google Play Console und rufen Sie Mit Google Play monetarisieren > Produkte > Einmalkaufprodukte auf.
- Klicken Sie auf der Seite Einmalkaufprodukte für Ihr Produkt (
upcoming_movie_1) auf Angebot hinzufügen > Vorbestellen. Die Seite Vorbestellung hinzufügen wird geöffnet. - Geben Sie die Details zur Vorbestellung ein:
- Vorbestellungs-ID:Geben Sie
preorder-offer-1ein. - (Optional) Rabatt hinzufügen: Sie können Kein Rabatt, Rabatt (in %) oder Rabatt insgesamt auswählen. Wählen Sie für dieses Codelab Kein Rabatt aus.
- (Optional) Tags:Fügen Sie relevante Tags hinzu.
- Startdatum und zugehörige Uhrzeit:Legen Sie ein Datum fest, das mindestens drei Tage in der Zukunft liegt.
- Enddatum und zugehörige Uhrzeit:Legen Sie ein Datum fest, das mindestens 24 Stunden nach dem Startdatum liegt.
- Verfügbarkeit nach Vorbestellungszeitraum:Wählen Sie aus, ob das Produkt sofort nach dem Vorbestellungszeitraum oder zu einem bestimmten späteren Datum/einer bestimmten späteren Uhrzeit verfügbar sein soll.
- (Optional) Garantie des niedrigeren Preises:Wählen Sie diese Option aus, wenn Nutzern der niedrigere Preis zwischen dem Vorbestellungs- und dem Veröffentlichungspreis berechnet werden soll. Das kann ein starker Anreiz für Frühkäufer sein.
- Vorbestellungs-ID:Geben Sie
- Klicken Sie auf Speichern.
- Öffnen Sie die Seite Einmalkaufprodukt bearbeiten für Ihr Einmalkaufprodukt (`upcoming_movie_1`).
- Klicken Sie für die Kaufoption „Kaufen“ (
buy-movie) auf Aktivieren. - Klicken Sie unter der Kaufoption „Kaufen“ für das Vorbesteller-Angebot (
preorder-offer-1) auf Aktivieren. Dadurch wird das Vorbesteller-Angebot aktiviert und zu dem Datum veröffentlicht, das Sie zuvor in den Details zur Vorbestellung konfiguriert haben.
Video zur Erstellung von Vorbesteller-Angeboten
Im folgenden Video werden die zuvor beschriebenen Schritte zur Erstellung von Vorbesteller-Angeboten gezeigt.
4. In die Play Billing Library einbinden
So binden Sie Ihre App in die Play Billing Library (PBL) ein:
- Fügen Sie der Beispiel-App die Play Billing Library-Abhängigkeit hinzu.
dependencies { val billing_version = "8.1.0" implementation("com.android.billingclient:billing-ktx:$billing_version") } - Initialisieren Sie den BillingClient. Der BillingClient ist das Client-SDK, das sich in Ihrer App befindet und mit der Play Billing Library kommuniziert. Das folgende Code-Snippet zeigt, wie Sie den Abrechnungsclient initialisieren.
private BillingClient createBillingClient() { return BillingClient.newBuilder(activity) .enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) // For one-time products, add a listener to process and acknowledge the purchases. This will notify // Google the purchase was processed. // For client-only apps, use billingClient.acknowledgePurchase(). // If you have a secure backend, you must acknowledge purchases on your server using the // server-side API. // See https://developer.android.com/google/play/billing/security#acknowledge // In this sample snippet purchases aren't processed. You must // implement your business logic to process and acknowledge the purchases. .setListener((billingResult, purchases) -> {}) .enableAutoServiceReconnection() .build(); } - Verbinden Sie sich mit Google Play.Das folgende Code-Snippet zeigt, wie Sie sich mit Google Play verbinden.
/** * Starts the billing connection with Google Play. This method should be called exactly once * before any other methods in this class. * * @param productList The list of products to query for after the connection is established. */ public void startBillingConnection(List<Product> productList) { billingClient.startConnection( new BillingClientStateListener() { @Override public void onBillingSetupFinished(BillingResult billingResult) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { Log.d(TAG, "Billing Client Connection Successful"); queryProductDetails(productList); } else { Log.e(TAG, "Billing Client Connection Failed: " + billingResult.getDebugMessage()); listener.onBillingSetupFailed(billingResult); // Propagate the error to the listener to show a message to the user. } } @Override public void onBillingServiceDisconnected() { Log.e(TAG, "Billing Client Connection Lost"); listener.onBillingError("Billing Connection Lost"); } }); } - Rufen Sie die Details zum Einmalkaufprodukt ab.Nachdem Sie Ihre App in die Play Billing Library eingebunden haben, müssen Sie die Details zum Einmalkaufprodukt in Ihre App abrufen. Das folgende Code-Snippet zeigt, wie Sie die Details zum Einmalkaufprodukt in Ihrer App abrufen.
Wenn Sie das Einmalkaufprodukt (private void queryProductDetails(List<Product> productList) { QueryProductDetailsParams queryProductDetailsParams = QueryProductDetailsParams.newBuilder().setProductList(productList).build(); billingClient.queryProductDetailsAsync( queryProductDetailsParams, new ProductDetailsResponseListener() { @Override public void onProductDetailsResponse( BillingResult billingResult, QueryProductDetailsResult productDetailsResponse) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { List<ProductDetails> productDetailsList = productDetailsResponse.getProductDetailsList(); listener.onProductDetailsResponse(productDetailsList); } else { Log.e(TAG, "QueryProductDetailsAsync Failed: " + billingResult.getDebugMessage()); listener.onBillingError("Query Products Failed: " + billingResult.getResponseCode()); } } }); }upcoming_movie_1in diesem Beispiel) inProductDetailsabrufen, erhalten Sie eine Antwort ähnlich der folgenden: Die Details zum Vorbesteller-Angebot sind in der{ "productId": "upcoming_movie_1", "type": "inapp", "title": "Purrfect Mayhem: The Final Playback (Movies All Day | Play Samples)", "name": "Purrfect Mayhem: The Final Playback", "description": "Yolo and Thorne must reach the original broadcasting site to initiate the \"Final Playback\" and save the timeline. Follow them through their race against the Clockinators.", "skuDetailsToken": "<---skuDetailsToken--->", "oneTimePurchaseOfferDetails": {}, "oneTimePurchaseOfferDetailsList": [ { "priceAmountMicros": 8500000, "priceCurrencyCode": "USD", "formattedPrice": "$8.50", "offerIdToken": "<---offerIdToken--->", "offerId": "preorder", "purchaseOptionId": "buy-option", "offerTags": [], "validTimeWindow": { "startTimeMillis": 1756771200000, "endTimeMillis": 1785542400000 }, "preorderDetails": { "preorderReleaseTimeMillis": 1785542400000, "preorderPresaleEndTimeMillis": 1785542400000 } } ] }oneTimePurchaseOfferDetailsListverfügbar. Diese Liste enthält eine Kaufoption (buy-option), für die in der Play Console ein Vorbesteller-Angebot konfiguriert wurde. Sie können jede Kaufoption anhand ihres offerIdToken eindeutig identifizieren. - Rufen Sie das Angebotstoken zusammen mit den Details zum Vorbesteller-Angebot ab. Sie benötigen das Angebotstoken, um in Schritt 6 den Abrechnungsprozess zu starten.
@Override public void onProductDetailsResponse(List<ProductDetails> productDetailsList) { if (productDetailsList != null && !productDetailsList.isEmpty()) { // Process productDetailsList returned by QueryProductDetailsResult for (ProductDetails productDetails : productDetailsResult.getProductDetailsList()) { for (OneTimePurchaseOfferDetails oneTimePurchaseOfferDetails : productDetails.getOneTimePurchaseOfferDetailsList()) { // Checks if the offer is a preorder offer. if (oneTimePurchaseOfferDetails.getPreorderDetails() != null) { // Process the returned PreorderDetails OneTimePurchaseOfferDetails.PreorderDetails preorderDetails = oneTimePurchaseOfferDetails.getPreorderDetails(); // Get preorder release time in millis. long preorderReleaseTimeMillis = preorderDetails.getPreorderReleaseTimeMillis(); // Get preorder presale end time in millis. long preorderPresaleEndTimeMillis = preorderDetails.getPreorderPresaleEndTimeMillis(); // Get offer ID String offerId = oneTimePurchaseOfferDetails.getOfferId(); // Get the associated purchase option ID if (oneTimePurchaseOfferDetails.getPurchaseOptionId() != null) { String purchaseOptionId = oneTimePurchaseOfferDetails.getPurchaseOptionId(); } } } } } else { Log.e(TAG, "No product details found for " + productId); } } - Starten Sie den Abrechnungsprozess.
/** * Launches the billing flow for the product with the given offer token. * * @param activity The activity instance from which the billing flow will be launched. * @param productDetails The product details of the product to purchase. * @param offerToken The offer token of the product to purchase. * @return The result of the billing flow. */ public void launchPurchase(Activity activity, ProductDetails productDetails, String offerToken) { ImmutableList<BillingFlowParams.ProductDetailsParams> productDetailsParamsList = ImmutableList.of( BillingFlowParams.ProductDetailsParams.newBuilder() .setProductDetails(productDetails) .setOfferToken(offerToken) .build()); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsParamsList) .build(); billingClient.launchBillingFlow(activity, billingFlowParams); }
5. Kaufoptionen testen
Bevor Sie Ihre Einmalkaufprodukte in Ihrer Live-App verfügbar machen, können Sie Ihre PBL-Einbindung mit Lizenztestern und dem Play Billing Lab testen.
Informationen zum Testen Ihrer Kaufoptionen mit dem Play Billing Lab finden Sie im Codelab Mit regionalen Produktpreisen neue Märkte erschließen.
6. Nächste Schritte
- Informationen zum Analysieren von Kaufabbrüchen bei Produkten
- Informationen zum Erschließen neuer Märkte mit regionalen Preisen
- Informationen zum Maximieren der Play Billing-Einbindung.
- Denken Sie daran, die Best Practices zum Überprüfen und Verarbeiten von Käufen in Ihrem sicheren Backend zu befolgen, sobald Nutzer diese Produkte kaufen.
Referenzdokumente
7. Glückwunsch!
Glückwunsch! Sie haben erfolgreich ein Vorbesteller-Angebot für ein Einmalkaufprodukt in der Google Play Console erstellt. Sie haben jetzt ein besseres Verständnis des flexiblen Produktkatalogs von Google Play für Einmalkäufe.
Umfrage
Wir freuen uns über Ihr Feedback zu diesem Codelab. Nehmen Sie sich einige Minuten Zeit, um an unserer Umfrage teilzunehmen.