Annunci con premio


Gli annunci con premio consentono agli utenti di interagire con loro in cambio per i premi in-app. Questa guida illustra come integrare gli annunci con premio App per Android e iOS che utilizzano l'SDK Google Mobile Ads C++.

Leggi alcune storie di successo dei clienti: case study 1, case study 2.

Prerequisiti

Esegui sempre test con annunci di prova

Durante la creazione e il test delle tue app, assicurati di utilizzare annunci di prova anziché annunci di produzione attivi. In caso contrario, il tuo account potrebbe essere sospeso.

Il modo più semplice per caricare gli annunci di prova è utilizzare il nostro ID unità pubblicitaria di prova dedicato annunci con premio, che variano in base alla piattaforma del dispositivo:

  • Android: ca-app-pub-3940256099942544/5224354917
  • iOS: ca-app-pub-3940256099942544/1712485313

Sono stati appositamente configurati per restituire annunci di prova per ogni richiesta. puoi usarlo nelle tue app durante la programmazione, i test e il debug. Assicurati di sostituirlo con il tuo ID unità pubblicitaria prima di pubblicare dell'app.

Per ulteriori informazioni sul funzionamento degli annunci di prova dell'SDK Mobile Ads, consulta Annunci di prova.

Implementazione

I passaggi principali per integrare gli annunci con premio sono:

  1. Carica un annuncio.
  2. Registrati per le richiamate.
  3. Mostrare l'annuncio e gestire l'evento premio.

Configura un RewardedAd

Gli annunci con premio vengono visualizzati in RewardedAd oggetti, quindi il primo passo da compiere Per integrare gli annunci con premio nella tua app, devi creare e inizializzare un'istanza di RewardedAd.

  1. Aggiungi la seguente intestazione al codice C++ dell'app:

     #include "firebase/gma/rewarded_ad.h"

  2. Dichiara e crea un'istanza per un oggetto RewardedAd:

     firebase::gma::RewardedAd* rewarded_ad;
     rewarded_ad = new firebase::gma::RewardedAd();

  3. Inizializza l'istanza RewardedAd utilizzando la tua vista padre trasmessa a un Tipo di AdParent. La visualizzazione principale è un riferimento jobject JNI a un Activity Android o un puntatore a un UIView iOS.

    // my_ad_parent is a jobject reference to an Android Activity or
    // a pointer to an iOS UIView.
    firebase::gma::AdParent ad_parent =
      static_cast<firebase::gma::AdParent>(my_ad_parent);
    firebase::Future<void> result = rewarded_ad->Initialize(ad_parent);
    
  4. In alternativa a conservare il futuro come variabile, puoi periodicamente controlla lo stato dell'operazione di inizializzazione richiamando InitializeLastResult() sull'oggetto RewardedAd. Potrebbe essere utile per tenere traccia del processo di inizializzazione nel ciclo di gioco globale.

    // Monitor the status of the future in your game loop:
    firebase::Future<void> result = rewarded_ad->InitializeLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      // Initialization completed.
      if(future.error() == firebase::gma::kAdErrorCodeNone) {
        // Initialization successful.
      } else {
        // An error has occurred.
      }
    } else {
      // Initialization on-going.
    }
    

Per ulteriori informazioni sull'utilizzo di firebase::Future, vedi Utilizzare i future per monitorare lo stato di completamento del metodo chiamate.

Carica un annuncio

Il caricamento di un annuncio viene eseguito utilizzando il metodo LoadAd() su un RewardedAd . Il metodo di caricamento richiede che tu abbia inizializzato RewardedAd e che disponi dell'ID unità pubblicitaria e di un oggetto AdRequest. R Viene restituito firebase::Future, che puoi utilizzare per monitorare stato e risultato dell'operazione di caricamento.

Il seguente codice mostra come caricare un annuncio dopo che RewardedAd è stato inizializzato correttamente:

firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = rewarded_ad->LoadAd(rewarded_ad_unit_id, ad_request);

Registrati per le richiamate

Devi estendere il corso FullScreenContentListener per ricevere notifiche relative alla presentazione di annunci con premio e agli eventi del ciclo di vita. La tua È possibile registrare FullScreenContentListener sottoclasse tramite RewardedAd::SetFullScreenContentListener() metodo e riceverà i callback quando l'annuncio viene presentato correttamente o meno, nonché quando viene ignorata.

Il seguente codice mostra come estendere la classe e assegnarla all'annuncio:

  class ExampleFullScreenContentListener
      : public firebase::gma::FullScreenContentListener {

   public:
    ExampleFullScreenContentListener() {}

    void OnAdClicked() override {
      // This method is invoked when the user clicks the ad.
    }

    void OnAdDismissedFullScreenContent() override {
     // This method is invoked when the ad dismisses full screen content.
    }

    void OnAdFailedToShowFullScreenContent(const AdError& error) override {
      // This method is invoked when the ad failed to show full screen content.
      // Details about the error are contained within the AdError parameter.
    }

    void OnAdImpression() override {
      // This method is invoked when an impression is recorded for an ad.
    }

    void OnAdShowedFullScreenContent() override {
      // This method is invoked when the ad showed its full screen content.
    }
  };

  ExampleFullScreenContentListener* example_full_screen_content_listener =
    new ExampleFullScreenContentListener();
  rewarded_ad->SetFullScreenContentListener(example_full_screen_content_listener);

RewardedAd è un oggetto monouso. Ciò significa che, una volta che un annuncio con premio non può essere mostrato di nuovo. Una best practice consiste nel caricare un altro annuncio con premio nel metodo OnAdDismissedFullScreenContent() di FullScreenContentListener in modo che il prossimo annuncio con premio inizi a caricarsi non appena perché quella precedente viene ignorata.

Mostrare l'annuncio e gestire l'evento di ricompensa

Prima di mostrare agli utenti un annuncio con premio, devi presentare una scelta esplicita per visualizzare i contenuti dell'annuncio con premio in cambio di un premio. Con premio gli annunci devono sempre essere basati su attivazione.

Quando presenti l'annuncio, devi fornire un oggetto UserEarnedReward per gestire il premio per l'utente.

Il seguente codice mostra come visualizzare un RewardedAd:

// A simple listener track UserEarnedReward events.
class ExampleUserEarnedRewardListener :
    public firebase::gma::UserEarnedRewardListener {
 public:
   ExampleUserEarnedRewardListener() { }

  void OnUserEarnedReward(const firebase::gma::AdReward& reward) override {
    // Reward the user!
  }
};

ExampleUserEarnedRewardListener* user_earned_reward_listener =
  new ExampleUserEarnedRewardListener();
firebase::Future<void> result = rewarded_ad->Show(user_earned_reward_listener);

Domande frequenti

C'è un timeout per la chiamata di inizializzazione?
Dopo 10 secondi, l'SDK Google Mobile Ads C++ completa la firebase::Future restituito da Initialize() anche se una rete di mediazione non ha completato l'inizializzazione.
Cosa succede se alcune reti di mediazione non sono pronte quando ricevo il callback di inizializzazione?

Una best practice consiste nel caricare gli annunci al termine dell'inizializzazione dell'SDK. Anche se una rete di mediazione non è pronta, l'SDK Google Mobile Ads C++ chiedere comunque un annuncio a quella rete. Quindi, se una rete di mediazione viene inizializzata dopo il timeout, potrà comunque gestire le richieste di annunci future in modo durante la sessione.

Puoi continuare a eseguire il polling dello stato di inizializzazione di tutti gli adattatori durante la tua sessione dell'app chiamando il numero GetInitializationStatus().

Come faccio a sapere perché una determinata rete di mediazione non è pronta?

AdapterStatus.description() descrive perché un adattatore non è pronto per l'assistenza richieste di annunci. Consulta il codice sorgente della nostra app di esempio della guida rapida su GitHub per un esempio di registrazione dello stato dell'adattatore di mediazione.

Risorse aggiuntive

Esempio in GitHub

  • Visualizza il codice sorgente del nostro esempio app rapida in GitHub.