Gli annunci con premio consentono agli utenti di interagire con loro in cambio per i premi in-app. Questa guida mostra come integrare gli annunci con premio nelle app per Android e iOS utilizzando l'SDK Google Mobile Ads C++.
Leggi alcune storie di successo dei clienti: case study 1, case study 2.
Prerequisiti
- Completa Inizia.
- (Solo Android) Familiarità nell'utilizzo dei riferimenti
jobject
di JNI (vedi suggerimenti per JNI per Android).
Esegui sempre test con annunci di prova
Quando crei e testi le tue app, assicurati di utilizzare annunci di prova anziché annunci pubblicati in produzione. 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 per gli annunci con premio, che varia 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:
- Carica un annuncio.
- Registrati per i callback.
- Mostra l'annuncio e gestisci l'evento con 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
.
Aggiungi la seguente intestazione al codice C++ della tua app:
#include "firebase/gma/rewarded_ad.h"
Dichiara e crea un'istanza per un oggetto
RewardedAd
:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
Inizializza l'istanza
RewardedAd
utilizzando la visualizzazione principale trasmessa a un tipoAdParent
. La vista genitore è un riferimentojobject
di JNI a unActivity
o un puntatore a unUIView
per 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 a conservare il futuro come variabile, puoi controllare periodicamente lo stato dell'operazione di inizializzazione chiamando
InitializeLastResult()
sull'oggettoRewardedAd
. Questa operazione 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
, 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 oggetto RewardedAd
. Il metodo di caricamento richiede che tu abbia inizializzato RewardedAd
e che disponi dell'ID unità pubblicitaria e di un oggetto AdRequest
. Viene restituito un valore 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 per le richiamate
Devi estendere la classe FullScreenContentListener
per ricevere le notifiche relative alla presentazione degli 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 un annuncio con premio agli utenti, devi presentare loro una scelta esplicita di visualizzare i contenuti degli annunci con premio in cambio di un premio. Gli annunci con premio devono sempre essere un'esperienza basata su attivazione.
Quando presenti il tuo annuncio, devi fornire un oggetto UserEarnedReward
da 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 per C++ completa il
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?
È buona prassi caricare gli annunci dopo il completamento 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. Pertanto, se una rete di mediazione completa l'inizializzazione dopo il timeout, può comunque gestire le richieste di annunci future in quella sessione.
Puoi continuare a monitorare lo stato di inizializzazione di tutti gli adattatori durante la sessione dell'app chiamando
GetInitializationStatus()
.- Come faccio a sapere perché una determinata 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 del nostro app di avvio rapido di esempio in GitHub per un esempio dello stato dell'adattatore di mediazione di logging.
Risorse aggiuntive
Esempio in GitHub
- Visualizza il codice sorgente del nostro esempio app rapida in GitHub.