Eine Möglichkeit, In‑App-Produkte und ‑Vorteile für Ihre Nutzer freizuschalten, besteht darin, Produkte mit Prämie 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 für Produkte mit Prämie spezifisch sind. Der Abschnitt Workflowdiagramm auf dieser Seite veranschaulicht den Prozess.
Produkte mit Prämie für Ihre App identifizieren
Produkte mit Prämie haben einen SkuType von INAPP. Damit Nutzer mehrere Anzeigen ansehen und mehrere Prämien erhalten können, müssen die Produkte genutzt werden.
Bevor Sie einem Nutzer ein Produkt mit 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 die Einhaltung der rechtlichen Verpflichtungen in Bezug auf Kinder und minderjährige Nutzer erleichtert wird, 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), sollten Sie in Ihrer App angeben, welche Anzeigen in den USA als auf Kinder ausgerichtet gelten und welche Anzeigen auf Nutzer ausgerichtet sind, die in ihrem Land das geltende Mindestalter für die Einwilligung noch nicht 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. Außerdem wird beschrieben, welche Auswirkungen dies hat.
Wenn Sie den Abrechnungsclient Ihrer App erstellen, sollten Sie überlegen, ob die Anfragen für Anzeigen mit Prämie als an Kinder gerichtet behandelt werden sollen oder ob sie an Nutzer gerichtet werden sollen, die das Mindestalter noch nicht erreicht haben. Wenn die Anzeigenanfragen diese Einschränkungen haben sollen, rufen Sie die Methoden setChildDirected() und setUnderAgeOfConsent() auf und übergeben Sie entsprechende Werte an die einzelnen Methoden.
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 Option zum Ansehen einer Videoanzeige präsentieren, um ein Produkt mit 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 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 Video geladen wurde. Der Zuhörer wird auch benachrichtigt, wenn das Video nicht verfügbar ist oder ein anderer Fehler auftritt, z. B. eine Zeitüberschreitung des Servers.
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 für Prämien.
- 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.
Wählen Sie beim Festlegen des Zeitpunkts für das Laden der Videos die Balance zwischen Bandbreitennutzung und Reaktionsfähigkeit der App aus, die für Ihren Anwendungsfall am besten geeignet ist:
- Laden Sie die Videos frühestens nach dem Aufrufen von
getSkuDetails()für das zugehörige Produkt mit Prämie. 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 in Ihrer App nur selten Bandbreite verschwendet. Der Nutzer muss jedoch möglicherweise einige Augenblicke warten, bevor er auf die Schaltfläche zum Ansehen des Videos klicken kann.
- Laden Sie die Videos frühestens nach dem Aufrufen von
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 Video, das mit einem Produkt mit Prämie verknüpft ist, 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 das Produkt nicht direkt kauft, um es als Prämie zu erhalten, müssen Sie den Abrechnungsablauf aktivieren, damit der Nutzer das Produkt erhalten und verwenden kann.
Kauf übernehmen
Wenn Sie Ihren Abrechnungsclient darüber informieren möchten, dass ein Nutzer ein Produkt mit Prämie erhalten und verwendet hat, verarbeiten Sie den Kauf in der Methode onPurchasesUpdated() des Listeners Ihres Abrechnungsclients. Beachte, dass Käufe mit Prämie verbraucht werden müssen.
Produkte mit Prämie testen
Wenn Sie testen möchten, wie Ihre App Videoanzeigen lädt und Nutzern Produkte mit Prämie 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 Google Play-Abrechnungs-App testen.
Eine weitere Testmethode ist die Verwendung der android.test.reward-Produkt-ID. 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. Andernfalls wird Ihr Konto möglicherweise als Spam- oder betrügerisches Konto gekennzeichnet.
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: