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, indem Sie das EAP-Antragsformular für Einmalkaufprodukte ausfüllen.
Zielgruppe
Dieses Codelab richtet sich an Android-App-Entwickler, die mit Einmalkaufprodukten vertraut sind und wissen möchten, wie sie ihren Einmalkaufprodukten Vorbesteller-Angebote hinzufügen können.
Voraussetzung
Wenn Sie noch keine Erfahrung mit Einmalkaufprodukten haben, empfehlen wir Ihnen, das Codelab zum Erschließen neuer Märkte mit regionalen Produktpreisen durchzuarbeiten.
Lerninhalte
- So erstellen Sie Vorbestellungsangebote für Ihre Einmalkaufprodukte in der Google Play Console.
- So fragen Sie mit den APIs der Play Billing Library Einmalkaufprodukte und die entsprechenden Vorbestellungsangebotsdetails ab.
Voraussetzungen
- Zugriff auf die Google Play Console mit einem Entwicklerkonto. Wenn Sie noch 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 Einmalkäufe verwalten. Die Beispiel-App ist als voll funktionsfähige Android-App konzipiert, deren vollständiger Quellcode die folgenden Aspekte zeigt:
- Integration der App in PBL
- Abrufen von Einmalkaufprodukten und den zugehörigen Vorbesteller-Angeboten.
- Kaufvorgänge für regionale Preise ausführen
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 damit experimentieren.
Voraussetzungen
Führen Sie vor dem Erstellen und Bereitstellen der Beispiel-App die folgenden Schritte aus:
- Erstellen Sie ein Google Play Console-Entwicklerkonto. Wenn Sie bereits ein Entwicklerkonto haben, überspringen Sie diesen Schritt.
- Erstellen Sie eine neue App in der Play Console. Beim Erstellen einer App können Sie einen beliebigen App-Namen für die Beispiel-App angeben.
- Installiere 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.
- Beispiel-App erstellen: Ändern Sie vor dem Erstellen den Paketnamen der Beispiel-App und erstellen Sie sie dann. Wenn Sie Pakete anderer Apps in der Play Console 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 nicht in der Play Console konfiguriert wurden. - Ein signiertes Android App Bundle generieren
Als Nächstes müssen Sie das Android-App-Bundle in die Google Play Console hochladen.
3. OTP mit Vorbestellung in der Play Console erstellen
Wenn Sie Einmalkaufprodukte in der Google Play Console 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 app-bezogene Details 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 > Testen > Interner Release > Neuen Release erstellen.
- Geben Sie einen Releasenamen 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 Einmalprodukte erstellen.
Einmalkaufprodukt erstellen
Erstelle nun das Einmalkaufprodukt, das die 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 repräsentiert.
- Produkt-ID:Geben Sie eine eindeutige ID ein. Beispiel:
- Klicken Sie auf Weiter.
- Fügen Sie eine Kaufoption hinzu und konfigurieren Sie ihre regionale Verfügbarkeit. Für ein Einmalkaufprodukt ist mindestens eine Kaufoption erforderlich, in der festgelegt wird, wie die Berechtigung gewährt wird, sowie der Preis und die regionale Verfügbarkeit. In diesem 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 für diese Kaufoption spezifisch sind.
- 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 sein soll. Darunter sind auch 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 Preis auf Verfügbarkeit und Zugriff bearbeiten.
- Wählen Sie Als „nicht verfügbar“ festlegen aus.
- Entfernen Sie nur die Auswahl des Landes
United Statesund klicken Sie dann auf Als „nicht verfügbar“ festlegen. Das Einmalkaufprodukt ist jetzt nur noch inUnited 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. Dadurch wird ein Dialogfeld zum Festlegen des Preises angezeigt.
- Geben Sie 10 $ ein und klicken Sie auf Speichern.
- Klicken Sie auf Als Entwurf speichern.
Hinweis: Aktivieren Sie die Kaufoption noch nicht. Wir aktivieren sie, nachdem du das Vorbestellungsangebot konfiguriert hast. 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
Als Nächstes 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 auf den Rechtspfeil (
upcoming_movie_1). 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. Hier sollten nur
United Statesangezeigt werden, die 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 Vorbestellungsdetails 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 Keine aus.
- (Optional) Tags:Fügen Sie relevante Tags hinzu.
- Startdatum und ‑uhrzeit:Legen Sie ein Datum fest, das mindestens drei Tage in der Zukunft liegt.
- Enddatum und ‑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 bzw. einer bestimmten späteren Uhrzeit verfügbar sein soll.
- (Optional) Garantie des niedrigeren Preises: Wählen Sie diese Option aus, wenn Nutzern der niedrigere der beiden Preise berechnet werden soll: der Preis bei der Vorbestellung oder der Preis bei der Veröffentlichung. Das kann ein starker Anreiz für Erstkä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 am Datum veröffentlicht, das Sie zuvor in den Vorbestelldetails konfiguriert haben.
Video zur Erstellung von Vorbesteller-Angeboten
Im folgenden Video sind die oben beschriebenen Schritte zum Erstellen eines Vorbesteller-Angebots zu sehen.
4. In PBL einbinden
So integrieren Sie Ihre App in die Play Billing Library (PBL):
- Fügen Sie der Beispiel-App die Abhängigkeit der Play Billing Library hinzu.
dependencies { val billing_version = "8.1.0" implementation("com.android.billingclient:billing-ktx:$billing_version") } - Initialisieren Sie den BillingClient. BillingClient ist das Client-SDK, das sich in Ihrer App befindet und mit der Play Billing Library kommuniziert. Das folgende Code-Snippet zeigt, wie der Abrechnungsclient initialisiert wird.
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(); } - Verbindung zu Google Play herstellen: Das folgende Code-Snippet zeigt, wie eine Verbindung zu Google Play hergestellt wird.
/** * 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"); } }); } - Details zum Einmalkaufprodukt abrufen: Nachdem Sie Ihre App in PBL eingebunden haben, müssen Sie die Details zum Einmalkaufprodukt in Ihrer App abrufen. Das folgende Code-Snippet zeigt, wie Sie die Details zum Einmalkaufprodukt in Ihrer App abrufen.
Wenn Sie das Einmalkaufprodukt (in diesem Beispielprivate 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_1) 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. Jede Kaufoption lässt sich anhand ihres offerIdToken eindeutig identifizieren. - Rufen Sie das Angebotstoken zusammen mit den Details zum Vorbesteller-Angebot ab. Sie benötigen das Angebotstoken, um den Abrechnungsablauf in Schritt 6 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 Abrechnungsvorgang.
/** * 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-Integration mit Lizenztestern und dem Play Billing Lab testen.
Informationen dazu, wie Sie Ihre Kaufoptionen mit dem Play Billing Lab testen können, finden Sie im Codelab Unlock new markets with regional product pricing.
6. Nächste Schritte
- Weitere Informationen zum Analysieren von Kaufabbrüchen
- Weitere Informationen
- Weitere Informationen
- Denken Sie daran, die Best Practices für die Bestätigung und Verarbeitung von Käufen in Ihrem sicheren Backend zu befolgen, sobald Nutzer diese Produkte kaufen.
Referenzdokumente
7. Glückwunsch!
Glückwunsch! Sie haben in der Google Play Console erfolgreich ein Vorbestellungsangebot für ein Einmalkaufprodukt erstellt. Sie haben jetzt ein besseres Verständnis des flexiblen Produktkatalogs von Google Play für Einmalkäufe.
Umfrage
Ihr Feedback zu diesem Codelab ist uns sehr wichtig. Nehmen Sie sich einige Minuten Zeit, um an unserer Umfrage teilzunehmen.