Gli annunci con premio consentono agli utenti di interagire con loro in cambio di premi in-app. Questa guida mostra come integrare gli annunci con premio nelle app per Android e iOS utilizzando l'SDK C++ di Google Mobile Ads.
Leggi alcuni casi di successo dei clienti: case study 1, case study 2.
Prerequisiti
- Completa il passaggio Inizia.
- (Solo Android) Avere familiarità con i riferimenti
jobject
di JNI (vedi suggerimenti per JNI per Android).
Esegui sempre il test con gli annunci di prova
Quando crei e testi le tue app, assicurati di utilizzare annunci di prova anziché annunci attivi di produzione. In caso contrario, l'account potrebbe essere sospeso.
Il modo più semplice per caricare gli annunci di prova è utilizzare l'ID dell'unità pubblicitaria di prova dedicata per gli annunci con premio, che varia a seconda della piattaforma del dispositivo:
- Android:
ca-app-pub-3940256099942544/5224354917
- iOS:
ca-app-pub-3940256099942544/1712485313
Sono stati appositamente progettati per restituire annunci di prova per ogni richiesta e possono essere utilizzati nelle proprie app durante la programmazione, il test e il debug. Assicurati di sostituirlo con il tuo ID unità pubblicitaria prima di pubblicare l'app.
Per ulteriori informazioni su come funzionano gli annunci di prova dell'SDK Mobile Ads, consulta la pagina Annunci di prova.
Implementazione
Ecco i passaggi principali per integrare gli annunci con premio:
- Caricare un annuncio.
- Registrati per richiamare.
- Mostrare l'annuncio e gestire l'evento del premio.
Configura un RewardedAd
Poiché gli annunci con premio vengono visualizzati negli oggetti RewardedAd
, il primo passaggio per integrare gli annunci con premio nella tua app consiste nel creare e inizializzare un'istanza di RewardedAd
.
Aggiungi la seguente intestazione al codice C++ della tua app:
#include "firebase/gma/rewarded_ad.h"
Dichiara e crea un'istanza di un oggetto
RewardedAd
:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
Inizializza l'istanza
RewardedAd
utilizzando la trasmissione principale in un tipoAdParent
. La vista genitore è un riferimento JNIjobject
a unActivity
Android o un puntatore aUIView
di 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);
In alternativa al mantenimento del futuro come variabile, puoi controllare periodicamente lo stato dell'operazione di inizializzazione richiamando
InitializeLastResult()
sull'oggettoRewardedAd
. Ciò può 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
, consulta la pagina Utilizzare il futuro per monitorare lo stato di completamento delle chiamate ai metodi.
Caricare un annuncio
Il caricamento di un annuncio viene eseguito utilizzando il metodo LoadAd()
su un oggetto RewardedAd
. Il metodo di caricamento richiede l'inizializzazione dell'oggetto RewardedAd
e la presenza dell'ID unità pubblicitaria e di un oggetto AdRequest
. Viene restituito un
firebase::Future
che puoi utilizzare per monitorare lo stato e il 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 ai callback
Devi estendere la classe FullScreenContentListener
per ricevere notifiche di presentazioni degli annunci con premio ed eventi del ciclo di vita. La sottocategoria
FullScreenContentListener
personalizzata può essere registrata tramite
il metodo RewardedAd::SetFullScreenContentListener()
, inoltre riceverà i
callback quando l'annuncio viene presentato correttamente o meno e quando
viene ignorato.
Il codice seguente 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 viene
mostrato, non può più essere mostrato. Una best practice prevede di caricare un altro annuncio con premio nel metodo OnAdDismissedFullScreenContent()
dell'FullScreenContentListener
in modo che l'annuncio con premio successivo inizi a essere caricato non appena viene ignorato il precedente.
Mostrare l'annuncio e gestire l'evento premio
Prima di mostrare un annuncio con premio agli utenti, devi offrire loro la possibilità esplicita di visualizzare i contenuti degli annunci con premio in cambio di un premio. Gli annunci con premio devono essere sempre attivi.
Quando presenti il tuo 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
- Esiste un timeout per la chiamata di inizializzazione?
- Dopo 10 secondi, l'SDK Google Mobile Ads C++ completa il comando
firebase::Future
restituito daInitialize()
anche se una rete di mediazione non ha ancora 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 annunci al termine dell'inizializzazione dell'SDK. Anche se una rete di mediazione non è pronta, l'SDK C++ di Google Mobile Ads chiede comunque un annuncio a quella rete. Pertanto, se una rete di mediazione termina l'inizializzazione dopo il timeout, può comunque gestire le richieste di annunci future in tale sessione.
Puoi continuare a eseguire il polling dello stato di inizializzazione di tutti gli adattatori durante la sessione dell'app chiamando
GetInitializationStatus()
.- Come faccio a scoprire perché una particolare rete di mediazione non è pronta?
AdapterStatus.description()
descrive il motivo per cui un adattatore non è pronto a gestire le richieste di annunci. Vedi il codice sorgente della nostra esempio di app della guida rapida in GitHub per un esempio di logging dello stato dell'adattatore di mediazione.
Risorse aggiuntive
Esempio in GitHub
- Visualizza il codice sorgente della nostra app di guida rapida di esempio in GitHub.