Aggiungere funzionalità specifiche dei prodotti premio

Un metodo per sbloccare prodotti e vantaggi in-app per gli utenti è creare prodotti premio, ovvero elementi che gli utenti ricevono dopo aver guardato un annuncio video. Fornendo prodotti premio, consenti agli utenti di ottenere premi e vantaggi in-app senza dover effettuare acquisti diretti.

Questo documento spiega come implementare la funzionalità specifica per i prodotti premio. La sezione del diagramma del flusso di lavoro di questa pagina illustra la procedura.

Identificare i prodotti premio della tua app

I prodotti premio hanno un SkuType di INAPP. Per garantire che gli utenti possano guardare più annunci e ricevere più premi, i prodotti devono essere consumati.

Prima di poter offrire un prodotto premio a un utente, devi ottenere il SkuDetails per il prodotto. Per farlo, chiama querySkuDetailsAsync() con SkuType.INAPP come tipo di prodotto.

Dichiarare gli annunci adatti all'età

Per facilitare la conformità agli obblighi legali relativi ai bambini e agli utenti minorenni, tra cui il Children's Online Privacy Protection Act (COPPA) e il Regolamento generale sulla protezione dei dati (GDPR), la tua app deve dichiarare quali annunci devono essere trattati come destinati ai bambini negli Stati Uniti e quali annunci sono destinati agli utenti che non hanno raggiunto l'età minima per il consenso nel loro paese. Il Centro assistenza AdMob spiega quando devi taggare le richieste di annunci per il trattamento per siti o servizi destinati ai bambini e quando devi taggarle per il trattamento per utenti che non hanno raggiunto l'età minima per il consenso, nonché gli effetti di questa operazione.

Quando crei il client di fatturazione della tua app, valuta se le richieste di annunci con premio devono essere trattate come rivolte ai minori o se devono essere indirizzate agli utenti che non hanno raggiunto l'età del consenso digitale. Se le richieste di annunci devono avere queste restrizioni, chiama i setChildDirected() e setUnderAgeOfConsent() metodi, passando i valori appropriati a ogni metodo.

Il seguente snippet di codice mostra come dichiarare che gli annunci video devono essere adatti ai bambini o agli utenti che non hanno raggiunto l'età del consenso digitale:

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();

Caricare gli annunci video

Prima di mostrare all'utente un'opzione per guardare un annuncio video al fine di ricevere un prodotto premio, devi caricare il video. Per farlo, crea un RewardLoadParams oggetto, associandolo all'SkuDetails oggetto che rappresenta il prodotto premio. Poi, chiama il metodo loadRewardedSku() del client di fatturazione, passando l'oggetto RewardLoadParams e un oggetto RewardResponseListener.

Il listener RewardResponseListener riceve una notifica al termine del caricamento del video. Il listener riceve una notifica anche se il video non è disponibile o se si verifica un altro errore, ad esempio un timeout del server.

Per mantenere il rendimento del dispositivo durante il caricamento dei video associati ai prodotti premio della tua app, tieni presente le seguenti best practice:

  • Carica al massimo tre SKU di prodotti premio alla volta.
  • Prova a caricare i video ogni volta che l'utente accede alla tua app. Questo passaggio ti aiuta a verificare se i video sono ancora caricati e disponibili.
  • Quando decidi quando caricare i video, scegli il giusto equilibrio tra utilizzo della larghezza di banda e reattività dell'app che funziona meglio per il tuo caso d'uso:

    • Al più presto, carica i video dopo aver chiamato getSkuDetails() per il prodotto premio associato. La tua app rimane molto reattiva, ma potresti sprecare dati di rete caricando un video che l'utente non guarda mai.
    • Al più tardi, carica il video quando l'utente passa alla pagina in cui deve essere visualizzato il video. In questo caso, la tua app spreca raramente la larghezza di banda, ma l'utente potrebbe dover attendere qualche istante prima che il pulsante per guardare il video diventi cliccabile.

Il seguente snippet di codice mostra la procedura per caricare un annuncio video che viene riprodotto prima che l'utente riceva il prodotto premio:

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.
                  }
            }
        });
}

Concedere agli utenti gli acquisti con premio

Se la libreria Fatturazione Google Play carica correttamente il video associato a un prodotto premio, ovvero se RewardResponseListener riceve un responseCode di BillingResponse.OK, puoi avviare il flusso di fatturazione.

Per iniziare a riprodurre gli annunci per un prodotto premio, chiama launchBillingFlow(), come fai per tutti gli altri tipi di prodotti in-app products. Anche se l'utente non effettua un acquisto diretto per ricevere un prodotto premio, devi comunque abilitare il flusso di fatturazione in modo che l'utente possa ottenere e utilizzare il prodotto.

Consumare l'acquisto

Per comunicare al client di fatturazione che un utente ha ricevuto e consumato un prodotto premio, gestisci l' acquisto nel metodo onPurchasesUpdated() del listener del client di fatturazione. Tieni presente che gli acquisti con premio devono essere consumati.

Testare i prodotti premio

Per testare il modo in cui la tua app carica gli annunci video e fornisce agli utenti i prodotti premio, utilizza i tester con licenza, che per impostazione predefinita ricevono annunci di prova anziché annunci reali. Per scoprire come configurare gli account per questi tester, consulta Testare un'app di Fatturazione Google Play.

Un altro metodo di test consiste nell'utilizzare l'ID prodotto android.test.reward. Questo prodotto specifico è un nome riservato in Fatturazione Google Play, quindi non devi aggiungerlo all'elenco dei prodotti in-app in Play Console.

Attenzione: quando testi i prodotti premio della tua app, non utilizzare prodotti reali, altrimenti il tuo account potrebbe essere contrassegnato come spam o fraudolento.

Al termine del test, assicurati di sostituire android.test.reward con gli ID prodotto dei tuoi prodotti premio reali prima di eseguire il deployment dell'app di produzione per gli utenti finali.

Diagramma del flusso di lavoro dei prodotti premio

Il seguente diagramma di sequenza mostra come l'utente, la tua app e la libreria Fatturazione Google Play interagiscono per mostrare un annuncio video e concedere all'utente l'accesso a un prodotto premio:

Diagramma di sequenza che mostra il protocollo dei prodotti-premio
Figura 1. Passaggi per completare un acquisto di un prodotto premio utilizzando Fatturazione Google Play