Funktionen für Prämienprodukte hinzufügen

Um In-App-Produkte und -Vorteile für Ihre Nutzer freizuschalten, können Sie Produkte mit Prämie entwickeln, also Artikel, die Nutzer erhalten, nachdem sie sich eine Videoanzeige angesehen haben. Durch das Bereitstellen von Prämien können Nutzer In-App-Prämien und -Vorteile erhalten, ohne dass sie direkt etwas kaufen müssen.

In diesem Dokument wird erläutert, wie du spezielle Funktionen für Prämien implementieren kannst. Im Abschnitt Workflowdiagramm auf dieser Seite wird der Prozess veranschaulicht.

Prämienprodukte Ihrer App identifizieren

Prämienprodukte haben einen SkuType von INAPP. Damit Nutzer mehrere Anzeigen ansehen und mehrere Prämien erhalten können, müssen die Produkte konsumiert werden.

Bevor du einem Nutzer ein Prämienprodukt anbieten kannst, musst du die SkuDetails für das Produkt abrufen. Rufen Sie dazu querySkuDetailsAsync() mit SkuType.INAPP als Produkttyp auf.

Altersgerechte Werbung angeben

Um die rechtlichen Verpflichtungen in Bezug auf Kinder und minderjährige Nutzer zu erfüllen, einschließlich des US-Gesetzes zum Schutz der Privatsphäre von Kindern im Internet (Children's Online Privacy Protection Act, COPPA) und der EU-Datenschutz-Grundverordnung (DSGVO), sollte in Ihrer App deklariert sein, welche Anzeigen in den USA als auf Kinder ausgerichtet zu behandeln sind und welche Anzeigen auf Nutzer ausgerichtet sind, die das in Ihrem Land geltende Mindestalter für Google-Konten noch nicht erreicht haben. In der AdMob-Hilfe erfahren Sie, wann Sie Ihre Anzeigenanfragen mit Tags zur Klassifizierung als Inhalte für Kinder versehen sollten und wann Sie sie für die Klassifizierung als Inhalte für Minderjährige kennzeichnen sollten und welche Auswirkungen das hat.

Überlegen Sie beim Erstellen des Abrechnungsclients für Ihre App, ob die Anfragen für Anzeigen mit Prämie als auf Kinder ausgerichtet behandelt werden sollen oder ob sie sich an Nutzer richten sollen, die das gültige Mindestalter noch nicht erreicht haben. Wenn für die Anzeigenanfragen diese Einschränkungen gelten sollen, rufen Sie die Methoden setChildDirected() und setUnderAgeOfConsent() auf und übergeben Sie die entsprechenden Werte an jede Methode.

Im folgenden Code-Snippet sehen Sie, wie Sie erklären, dass Videoanzeigen für Kinder oder Nutzer, die das gültige Mindestalter noch nicht erreicht haben, geeignet sind:

Kotlin

val billingClient = BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build()

Java

BillingClient billingClient =
    BillingClient.newBuilder(context)
        .setListener(this)
        .setChildDirected(ChildDirected.CHILD_DIRECTED)
        .setUnderAgeOfConsent(UnderAgeOfConsent.UNDER_AGE_OF_CONSENT)
        .build();

Videoanzeigen laden

Bevor dem Nutzer die Option angezeigt wird, sich eine Videoanzeige anzusehen, um ein Produkt mit Prämie zu erhalten, müssen Sie das Video laden. Dazu musst du ein RewardLoadParams-Objekt erstellen und es mit dem SkuDetails-Objekt verknüpfen, das das Prämienprodukt darstellt. Rufen Sie dann die Methode loadRewardedSku() Ihres Abrechnungskunden auf und übergeben Sie das Objekt RewardLoadParams und ein RewardResponseListener-Objekt.

Der Listener RewardResponseListener wird benachrichtigt, wenn das Video fertig geladen ist. Der Listener wird auch benachrichtigt, wenn das Video nicht verfügbar ist oder wenn ein anderer Fehler auftritt (z. B. eine Zeitüberschreitung beim Server).

Beachten Sie die folgenden Best Practices, um die Geräteleistung beim Laden der Videos, die mit den Prämienprodukten Ihrer App verknüpft sind, aufrechtzuerhalten:

  • Laden Sie maximal drei SKUs für Prämienprodukte gleichzeitig.
  • Versuchen Sie, die Videos immer dann zu laden, wenn der Nutzer die App öffnet. Mit diesem Schritt können Sie prüfen, ob die Videos noch geladen und verfügbar sind.
  • Wählen Sie bei der Entscheidung, wann die Videos geladen werden sollen, ein Gleichgewicht zwischen Bandbreitennutzung und Reaktionsgeschwindigkeit der Anwendung aus, die für Ihren Anwendungsfall am besten geeignet ist:

    • Lade die Videos frühestens nach dem Aufruf von getSkuDetails() für das verknüpfte Prämienprodukt. Ihre App reagiert sehr schnell, möglicherweise verschwenden Sie jedoch Netzwerkdaten durch das Laden eines Videos, das sich der Nutzer nie ansieht.
    • Laden Sie das Video spätestens dann, wenn der Nutzer die Seite aufruft, auf der das Video angezeigt werden soll. Ihre Anwendung verschwendet in diesem Fall selten Bandbreite. Es kann jedoch sein, dass der Nutzer einen Moment warten muss, bis die Schaltfläche zum Ansehen des Videos angeklickt werden kann.

Im folgenden Code-Snippet wird der Vorgang zum Laden einer Videoanzeige veranschaulicht, die wiedergegeben wird, bevor der Nutzer die Prämie erhält:

Kotlin

if (skuDetails.isRewarded()) {
    val params = RewardLoadParams.Builder()
            .setSkuDetails(skuDetails)
            .build()
    mBillingClient.loadRewardedSku(params.build(),
            object : RewardResponseListener {
        override fun onRewardResponse(@BillingResponse responseCode : Int) {
            if (responseCode == BillingResponse.OK) {
                // Enable the reward product, or make
                // any necessary updates to the UI.
            }
        }
    })
}

Java

if (skuDetails.isRewarded()) {
    RewardLoadParams.Builder params = RewardLoadParams.newBuilder();
    params.setSkuDetails(skuDetails);
    mBillingClient.loadRewardedSku(params.build(),
        new RewardResponseListener() {
            @Override
            public void onRewardResponse(int responseCode) {
                if (responseCode == BillingResponse.OK) {
                      // Enable the reward product, or make
                      // any necessary updates to the UI.
                  }
            }
        });
}

Nutzern Käufe mit Prämie ermöglichen

Wenn die Google Play Billing Library das mit einem Prämienprodukt verknüpfte Video erfolgreich lädt, d. h. wenn RewardResponseListener ein responseCode von BillingResponse.OK erhält, kannst du den Abrechnungsvorgang starten.

Um Anzeigen für ein Prämienprodukt zu spielen, musst du wie bei allen anderen Arten von In-App-Produkten launchBillingFlow() aufrufen. Auch wenn der Nutzer keinen direkten Kauf tätigt, um ein Prämienprodukt zu erhalten, musst du den Abrechnungsablauf aktivieren, damit der Nutzer das Produkt erwerben und nutzen kann.

Kauf tätigen

Wenn du deinen Abrechnungsclient darüber informieren möchtest, dass ein Nutzer ein Prämienprodukt erhalten und genutzt hat, verarbeite den Kauf in der Methode onPurchasesUpdated() deines Abrechnungsclient-Listeners. Käufe mit Prämie müssen jedoch abgeschlossen werden.

Prämienprodukte testen

Um zu testen, wie Ihre App Videoanzeigen lädt und Nutzern Prämienprodukte zur Verfügung gestellt werden, können Sie lizenzierte Tester hinzuziehen, die standardmäßig Testanzeigen anstelle von echten Anzeigen erhalten. Informationen zur Einrichtung von Konten für diese Tester findest du unter Nutzertest einer Google Play Billing-App.

Eine andere Testmethode ist die Verwendung der Produkt-ID android.test.reward. Dieses Produkt ist in Google Play Billing ein reservierter Name. Du musst es also nicht der Liste der In-App-Produkte in der Play Console hinzufügen.

Achtung: Verwende keine tatsächlichen Produkte, wenn du die Prämienprodukte deiner App testest. Andernfalls wird dein Konto möglicherweise als Spam oder betrügerisches Konto gekennzeichnet.

Nachdem du die Tests abgeschlossen hast, musst du jedoch android.test.reward durch die Produkt-IDs für deine tatsächlichen Prämienprodukte ersetzen, bevor du die Produktions-App für Endnutzer bereitstellst.

Diagramm des Workflows für Prämienprodukte

Das folgende Sequenzdiagramm zeigt, wie der Nutzer, Ihre App und die Google Play Billing Library zusammenwirken, um eine Videoanzeige einzublenden und dem Nutzer Zugriff auf eine Prämie zu gewähren:

Sequenzdiagramm mit Protokoll für Prämienprodukte
Abbildung 1: Schritte zum Kauf eines Prämienprodukts über Google Play Billing