Gli annunci con premio sono annunci con cui gli utenti possono interagire in cambio per i premi in-app. Questa guida mostra come integrare gli annunci con premio di AdMob in un'app per iOS. Leggi alcuni casi di successo dei clienti: case study 1, case study 2.
Prerequisiti
- SDK Google Mobile Ads 8.0.0 o versioni successive.
- Completa la Guida introduttiva.
Effettua 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, l'account verrà sospeso.
Il modo più semplice per caricare annunci di prova è utilizzare il nostro ID unità pubblicitaria di prova dedicato per iOS. annunci con premio:
ca-app-pub-3940256099942544/1712485313
È stato appositamente configurato per restituire annunci di prova per ogni richiesta Puoi usarlo senza costi nelle tue app durante la programmazione, i test e il debug. Crea assicurati di sostituirlo con il tuo ID unità pubblicitaria prima di pubblicare l'app.
Per ulteriori informazioni sul funzionamento degli annunci di prova dell'SDK Mobile Ads, consulta la sezione Test Google Ads.
Implementazione
Di seguito sono riportati i passaggi principali per integrare gli annunci con premio:
- Carica un annuncio
- [Facoltativo] Convalida i callback SSV
- Registrati per le richiamate
- Visualizzare l'annuncio e gestire l'evento di ricompensa
Carica un annuncio
Il caricamento di un annuncio si esegue utilizzando
loadWithAdUnitID:request:completionHandler:
nella
GADRewardedAd
corso. Il metodo di caricamento richiede l'ID unità pubblicitaria, un
GADRequest
oggetto e un gestore del completamento
che viene chiamato quando il caricamento dell'annuncio ha esito positivo o negativo. Il modello caricato
L'oggetto GADRewardedAd
viene fornito come parametro nel completamento
. L'esempio seguente mostra come caricare un GADRewardedAd
in
il tuo corso ViewController
.
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var rewardedAd: GADRewardedAd?
func loadRewardedAd() {
do {
rewardedAd = try await GADRewardedAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest())
} catch {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}
}
}
Objective-C
@import GoogleMobileAds;
@import UIKit;
@interface ViewController ()
@property(nonatomic, strong) GADRewardedAd *rewardedAd;
@end
@implementation ViewController
- (void)loadRewardedAd {
GADRequest *request = [GADRequest request];
[GADRewardedAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"
request:request
completionHandler:^(GADRewardedAd *ad, NSError *error) {
if (error) {
NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
return;
}
self.rewardedAd = ad;
NSLog(@"Rewarded ad loaded.");
}];
}
[Facoltativo] Convalida i callback di verifica lato server (SSV)
App che richiedono dati aggiuntivi sul lato server
i callback di verifica devono utilizzare
funzionalità per i dati personalizzati degli annunci con premio. Qualsiasi valore di stringa impostato su un annuncio con premio
viene passato al parametro di query custom_data
del callback SSV. In caso contrario
valore dei dati personalizzati è impostato, il valore del parametro di ricerca custom_data
non sarà
presente nel callback SSV.
Il seguente esempio di codice mostra come impostare dati personalizzati su un annuncio con premio prima di richiedere un annuncio.
Swift
do {
rewardedAd = try await GADRewardedAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest())
let options = GADServerSideVerificationOptions()
options.customRewardString = "SAMPLE_CUSTOM_DATA_STRING"
rewardedAd.serverSideVerificationOptions = options
} catch {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}
Objective-C
[GADRewardedAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"
request:[GADRequest request];
completionHandler:^(GADRewardedAd *ad, NSError *error) {
if (error) {
// Handle Error
return;
}
self.rewardedAd = ad;
GADServerSideVerificationOptions *options =
[[GADServerSideVerificationOptions alloc] init];
options.customRewardString = @"SAMPLE_CUSTOM_DATA_STRING";
ad.serverSideVerificationOptions = options;
}];
Registrati per le richiamate
Per ricevere notifiche per gli eventi di presentazione, devi implementare
il protocollo GADFullScreenContentDelegate
e assegnarlo al
Proprietà fullScreenContentDelegate
dell'annuncio restituito. La
Il protocollo GADFullScreenContentDelegate
gestisce i callback quando l'annuncio
presenta correttamente o meno e quando viene ignorato. Le seguenti
mostra come implementare il protocollo e assegnarlo all'annuncio:
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController, GADFullScreenContentDelegate {
private var rewardedAd: GADRewardedAd?
func loadRewardedAd() {
do {
rewardedAd = try await GADRewardedAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest())
rewardedAd?.fullScreenContentDelegate = self
} catch {
print("Rewarded ad failed to load with error: \(error.localizedDescription)")
}
}
/// Tells the delegate that the ad failed to present full screen content.
func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("Ad did fail to present full screen content.")
}
/// Tells the delegate that the ad will present full screen content.
func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad will present full screen content.")
}
/// Tells the delegate that the ad dismissed full screen content.
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad did dismiss full screen content.")
}
}
Objective-C
@interface ViewController () <GADFullScreenContentDelegate>
@property(nonatomic, strong) GADRewardedAd *rewardedAd;
@end
@implementation ViewController
- (void)loadRewardedAd {
GADRequest *request = [GADRequest request];
[GADRewardedAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/4806952744"
request:request
completionHandler:^(GADRewardedAd *ad, NSError *error) {
if (error) {
NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
return;
}
self.rewardedAd = ad;
NSLog(@"Rewarded ad loaded.");
self.rewardedAd.fullScreenContentDelegate = self;
}];
}
/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
NSLog(@"Ad did fail to present full screen content.");
}
/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"Ad will present full screen content.");
}
/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"Ad did dismiss full screen content.");
}
GADRewardedAd
è 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 adDidDismissFullScreenContent:
su GADFullScreenContentDelegate
in modo che l'annuncio con premio successivo inizi a caricarsi non appena quello precedente viene
ignorata.
Visualizzare 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. Con premio gli annunci devono sempre essere basati su attivazione.
Quando presenti il tuo annuncio, devi fornire un oggetto GADUserDidEarnRewardHandler
per gestire il premio
per l'utente.
Il seguente codice presenta il metodo migliore per visualizzare un annuncio con premio.
Swift
func show() {
guard let rewardedAd = rewardedAd else {
return print("Ad wasn't ready.")
}
// The UIViewController parameter is an optional.
ad.present(fromRootViewController: nil) {
let reward = ad.adReward
print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)")
// TODO: Reward the user.
}
}
Objective-C
- (void)show {
if (self.rewardedAd) {
// The UIViewController parameter is nullable.
[self.rewardedAd presentFromRootViewController:nil
userDidEarnRewardHandler:^{
GADAdReward *reward =
self.rewardedAd.adReward;
// TODO: Reward the user!
}];
} else {
NSLog(@"Ad wasn't ready");
}
}
Domande frequenti
- Posso avere i dettagli del premio per
GADRewardedAd
? - Sì, se hai bisogno dell'importo del premio prima della richiamata di
userDidEarnReward
viene attivato,GADRewardedAd
haadReward
che puoi controllare per verificare l'importo del premio dopo il caricamento dell'annuncio. - C'è un timeout per la chiamata di inizializzazione?
- Dopo 10 secondi, l'SDK Google Mobile Ads richiama il metodo
GADInitializationCompletionHandler
fornito a metodostartWithCompletionHandler:
, 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?
Ti consigliamo di caricare un annuncio all'interno
GADInitializationCompletionHandler
. Anche se una rete di mediazione non è pronta, ma l'SDK Google Mobile Ads richiede comunque un annuncio a quella rete. Quindi se termina l'inizializzazione della rete di mediazione dopo il timeout, può comunque richieste di annunci future in quella sessione.Puoi continuare a eseguire il polling dello stato di inizializzazione di tutti gli adattatori durante la tua sessione dell'app chiamando il numero
GADMobileAds.initializationStatus
.- Come faccio a sapere perché una determinata rete di mediazione non è pronta?
La proprietà
description
di un oggettoGADAdapterStatus
descrive il motivo per cui un non è pronto per gestire le richieste di annunci.- Il gestore del completamento di
userDidEarnRewardHandler
viene sempre chiamato prima del metodo delegatoadDidDismissFullScreenContent:
? Per Google Ads, vengono effettuate tutte e
userDidEarnRewardHandler
le chiamate prima del giornoadDidDismissFullScreenContent:
. Per gli annunci pubblicati tramite mediazione, la rete pubblicitaria di terze parti L'implementazione dell'SDK determina l'ordine di callback. Per gli SDK delle reti pubblicitarie fornisce un unico metodo di delega con informazioni sui premi, l'adattatore di mediazione richiamauserDidEarnRewardHandler
prima diadDidDismissFullScreenContent:
.
Esempi su GitHub
- Esempio di annunci con premio: Swift | Obiettivo-C
Passaggi successivi
Scopri di più sulla privacy dell'utente.