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 Videoanzeige angesehen haben. Wenn Sie Produkte mit Prämie anbieten, können Nutzer In-App-Prämien und ‑Vorteile erhalten, ohne direkte Käufe tätigen zu müssen.

In diesem Dokument wird beschrieben, wie Sie Funktionen implementieren, die speziell für Prämienprodukte vorgesehen sind. Im Abschnitt Workflowdiagramm auf dieser Seite wird der Prozess veranschaulicht.

Prämienprodukte Ihrer App identifizieren

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

Bevor Sie einem Nutzer ein Produkt mit Prämie anbieten können, müssen Sie die SkuDetails für das Produkt einholen. 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 angeben, welche Anzeigen in den USA als an Kinder gerichtet gelten und welche Anzeigen an Nutzer gerichtet sind, die in ihrem Land noch nicht das geltende Mindestalter für die Einwilligung erreicht haben. In der AdMob-Hilfe wird erläutert, wann Sie Ihre Anzeigenanfragen mit einem Tag zur Klassifizierung als Inhalte für Kinder und wann mit einem Tag zur Klassifizierung als Inhalte für Nutzer unter dem Mindestalter versehen sollten und welche Auswirkungen dies hat.

Wenn Sie den Abrechnungsclient Ihrer App erstellen, sollten Sie überlegen, ob Anfragen für Anzeigen mit Prämie als an Kinder gerichtet behandelt werden sollen oder ob sie sich an Nutzer richten sollen, die noch nicht volljährig sind. Wenn die Anzeigenanfragen diese Einschränkungen haben sollen, rufen Sie die Methoden setChildDirected() und setUnderAgeOfConsent() auf und übergeben Sie die entsprechenden Werte für jede Methode.

Das folgende Code-Snippet zeigt, wie Sie deklarieren, dass Videoanzeigen für Kinder oder Nutzer, die noch nicht das gültige Mindestalter erreicht haben, 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 ein Produkt mit Prämie zu erhalten, müssen Sie das Video laden. Erstellen Sie dazu ein RewardLoadParams-Objekt und ordnen Sie es dem SkuDetails-Objekt zu, das das Produkt mit Prämie darstellt. Rufen Sie dann die Methode loadRewardedSku() des Abrechnungsclients auf und übergeben Sie das RewardLoadParams-Objekt und ein RewardResponseListener-Objekt.

Der RewardResponseListener-Listener wird benachrichtigt, wenn das Laden des Videos abgeschlossen ist. Der Zuhörer wird auch benachrichtigt, wenn das Video nicht verfügbar ist oder ein anderer Fehler auftritt, z. B. eine Server-Zeitüberschreitung.

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

  • Laden Sie jeweils maximal drei Produkt-SKUs mit Prämie.
  • Versuchen Sie, die Videos immer dann zu laden, wenn der Nutzer Ihre App aufruft. So können Sie prüfen, ob die Videos noch geladen und verfügbar sind.
  • Bei der Entscheidung, wann die Videos geladen werden sollen, müssen Sie ein Gleichgewicht zwischen Bandbreitennutzung und Reaktionsfähigkeit der App finden, das für Ihren Anwendungsfall am besten geeignet ist:

    • Laden Sie die Videos frühestens, nachdem Sie getSkuDetails() für das zugehörige Produkt mit Prämie aufgerufen haben. Ihre App reagiert weiterhin sehr schnell, aber Sie verschwenden möglicherweise Netzwerkdaten, wenn Sie ein Video laden, das der Nutzer nie ansieht.
    • Laden Sie das Video spätestens dann, wenn der Nutzer die Seite aufruft, auf der es angezeigt werden soll. In diesem Fall wird nur selten Bandbreite verschwendet, aber der Nutzer muss möglicherweise einige Augenblicke warten, bevor er auf die Schaltfläche zum Ansehen des Videos klicken kann.

Das folgende Code-Snippet zeigt, wie eine Videoanzeige geladen wird, die abgespielt wird, bevor der Nutzer das Produkt mit 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 gewähren

Wenn die Google Play Billing Library das mit einem Produkt mit Prämie verknüpfte Video erfolgreich lädt, d. h., wenn RewardResponseListener ein responseCode von BillingResponse.OK empfängt, können Sie den Abrechnungsablauf starten.

Sie beginnen mit der Wiedergabe von Anzeigen für ein Produkt mit Prämie, indem Sie launchBillingFlow() aufrufen, wie bei allen anderen Arten von In-App-Produkten. Auch wenn der Nutzer keine direkte Kaufhandlung vornimmt, um eine Prämie zu erhalten, müssen Sie den Abrechnungsablauf aktivieren, damit der Nutzer die Prämie erhalten und verwenden kann.

Kauf aufnehmen

Um Ihren Abrechnungsclient darüber zu informieren, dass ein Nutzer ein Produkt mit Prämie erhalten und verwendet hat, verarbeiten Sie den Kauf in der Methode onPurchasesUpdated() des Listeners Ihres Abrechnungsclients. Käufe mit Prämie müssen eingelöst werden.

Prämien testen

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

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

Achtung: Verwenden Sie beim Testen der Prämienprodukte Ihrer App keine tatsächlichen Produkte, da Ihr Konto sonst möglicherweise als Spam- oder betrügerisches Konto gekennzeichnet wird.

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

Diagramm des Workflows für Produkte mit Prämie

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 ein Produkt mit Prämie zu gewähren:

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