Funktionen für Prämienprodukte hinzufügen

Eine Möglichkeit, In‑App-Produkte und ‑Vorteile für Ihre Nutzer freizuschalten, besteht darin, Prämien zu erstellen. Das sind Artikel, die Nutzer erhalten, nachdem sie sich eine Video anzeige angesehen haben. Wenn Sie Prämien anbieten, können Nutzer In‑App-Prämien und ‑Vorteile erhalten, ohne direkt etwas kaufen zu müssen.

In diesem Dokument wird erläutert, wie Sie Funktionen implementieren, die speziell für Prämien vorgesehen sind. Im Abschnitt Workflow-Diagramm auf dieser Seite wird der Prozess veranschaulicht.

Prämien Ihrer App identifizieren

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

Bevor Sie einem Nutzer eine Prämie anbieten können, müssen Sie die SkuDetails für das Produkt abrufen. Rufen Sie dazu querySkuDetailsAsync() mit SkuType.INAPP als Produkttyp auf.

Altersgerechte Anzeigen deklarieren

Damit Sie die rechtlichen Verpflichtungen in Bezug auf Kinder und minderjährige Nutzer einhalten können, einschließlich des US-Gesetzes zum Schutz der Privatsphäre von Kindern im Internet (Children's Online Privacy Protection Act, COPPA) und der Datenschutz-Grundverordnung (DSGVO), sollten Sie in Ihrer App deklarieren, welche Anzeigen in den USA als auf Kinder ausgerichtet behandelt werden sollen und welche Anzeigen sich an Nutzer richten, die in ihrem Land noch nicht das geltende Mindestalter erreicht haben. In der AdMob Hilfe wird erläutert, wann Sie Ihre Anzeigenanfragen als auf Kinder ausgerichtet kennzeichnen sollten und wann als für Nutzer unter dem Mindestalter kennzeichnen sollten und welche Auswirkungen dies hat.

Wenn Sie den Abrechnungsclient Ihrer App erstellen, sollten Sie überlegen, ob die Anzeigenanfragen für Anzeigen mit Prämie als auf Kinder ausgerichtet behandelt werden sollen oder ob sie sich an Nutzer richten sollen, die noch nicht das gültige Mindestalter erreicht haben. Wenn für die Anzeigenanfragen diese Einschränkungen gelten sollen, rufen Sie die setChildDirected() und setUnderAgeOfConsent() Methoden auf und übergeben Sie die entsprechenden Werte an die einzelnen Methoden.

Das folgende Code-Snippet zeigt, wie Sie deklarieren, dass Videoanzeigen für Kinder oder für Nutzer unter dem gültigen Mindestalter geeignet sein sollen:

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 Sie dem Nutzer die Möglichkeit geben, sich eine Videoanzeige anzusehen, um eine Prämie zu erhalten, müssen Sie das Video laden. Erstellen Sie dazu ein RewardLoadParams-Objekt und verknüpfen Sie es mit dem SkuDetails-Objekt, das die Prämie darstellt. Rufen Sie dann die Methode loadRewardedSku() Ihres Abrechnungsclients auf und übergeben Sie das RewardLoadParams-Objekt und ein RewardResponseListener -Objekt.

Der Listener RewardResponseListener wird benachrichtigt, wenn das Video geladen wurde. Der Listener wird auch benachrichtigt, wenn das Video nicht verfügbar ist oder ein anderer Fehler auftritt, z. B. ein Server-Timeout.

Damit die Geräteleistung beim Laden der Videos, die mit den Prämien Ihrer App verknüpft sind, nicht beeinträchtigt wird, sollten Sie die folgenden Best Practices beachten:

  • Laden Sie maximal drei SKUs für Prämien gleichzeitig.
  • Versuchen Sie, die Videos zu laden, wenn der Nutzer Ihre App öffnet. So können Sie prüfen, ob die Videos noch geladen und verfügbar sind.
  • Wählen Sie beim Festlegen des Zeitpunkts für das Laden der Videos die Balance zwischen Bandbreitennutzung und Reaktionsfähigkeit der App, die für Ihren Anwendungsfall am besten geeignet ist:

    • Laden Sie die Videos frühestens, nachdem Sie getSkuDetails() für die zugehörige Prämie aufgerufen haben. Ihre App bleibt sehr reaktionsschnell, aber Sie verschwenden möglicherweise Netzwerkdaten, wenn Sie ein Video laden, das der Nutzer sich nie ansieht.
    • Laden Sie das Video spätestens, wenn der Nutzer zu der Seite navigiert, auf der das Video angezeigt werden soll. In diesem Fall verschwendet Ihre App selten Bandbreite, aber der Nutzer muss möglicherweise einige Augenblicke warten, bevor die Schaltfläche zum Ansehen des Videos angeklickt werden kann.

Das folgende Code-Snippet zeigt, wie Sie eine Videoanzeige laden, die abgespielt 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.
                  }
            }
        });
}

Prämien an Nutzer vergeben

Wenn die Google Play Billing Library das Video, das mit einer Prämie verknüpft ist, erfolgreich lädt, d. h. wenn der RewardResponseListener einen responseCode von BillingResponse.OK erhält, können Sie den Abrechnungsablauf starten.

Sie starten die Wiedergabe von Anzeigen für eine Prämie, indem Sie launchBillingFlow() aufrufen, wie bei allen anderen Arten von In‑App- Produkten. Auch wenn der Nutzer keinen direkten Kauf tätigt, um eine Prämie zu erhalten, müssen Sie den Abrechnungsablauf aktivieren, damit der Nutzer das Produkt erhalten und verwenden kann.

Kauf einlösen

Wenn Sie Ihren Abrechnungsclient benachrichtigen möchten, dass ein Nutzer eine Prämie erhalten und eingelöst hat, verarbeiten Sie den Kauf in der Methode onPurchasesUpdated() des Abrechnungsclient-Listeners. Prämien müssen eingelöst werden.

Prämien testen

Wenn Sie testen möchten, wie Ihre App Videoanzeigen lädt und Nutzern Prämien zur Verfügung stellt, verwenden Sie lizenzierte Tester, die standardmäßig Testanzeigen anstelle von echten Anzeigen erhalten. Informationen zum Einrichten von Konten für diese Tester finden Sie unter Nutzertests einer Google Play Billing-App durchführen.

Eine weitere Testmethode besteht darin, die Produkt-ID android.test.reward zu verwenden. Dieses Produkt ist ein reservierter Name in Google Play Billing. Sie müssen es also nicht der Liste der In‑App-Produkte in der Play Console hinzufügen.

Achtung: Verwenden Sie beim Testen der Prämien Ihrer App keine echten Produkte. Andernfalls wird Ihr Konto möglicherweise als Spam- oder Betrugskonto gekennzeichnet.

Wenn Sie mit dem Testen fertig sind, müssen Sie android.test.reward durch die Produkt-IDs Ihrer tatsächlichen Prämien ersetzen, bevor Sie Ihre Produktions-App für Endnutzer bereitstellen.

Diagramm des Workflows für Prämien

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

Sequenzdiagramm für das Protokoll für Produkte mit Prämie
Abbildung 1. Schritte zum Abschließen eines Kaufs einer Prämie mit Google Play Billing