Questa guida è rivolta ai publisher che integrano gli annunci apertura app.
Gli annunci apertura app sono un formato di annuncio speciale destinato ai publisher che intendono monetizzare le schermate di caricamento dell'app. Gli annunci apertura app possono essere chiusi dai tuoi utenti in qualsiasi momento. Gli annunci apertura app possono essere mostrati quando gli utenti portano la tua app in primo piano.
Gli annunci apertura app mostrano automaticamente una piccola area di branding in modo che gli utenti sappiano di trovarsi nella tua app. Ecco un esempio di annuncio apertura app:
In linea generale, ecco i passaggi necessari per implementare gli annunci apertura app:
- Aggiungi metodi a
AppDelegate
per caricare e visualizzare unGADAppOpenAd
. - Rileva gli eventi in primo piano nell'app.
- Gestire i callback di presentazione.
Prerequisiti
- Segui le istruzioni di configurazione nella Guida introduttiva.
- Scopri come configurare il tuo dispositivo come dispositivo di prova.
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 il nostro ID unità pubblicitaria di prova dedicato per gli annunci apertura app:
ca-app-pub-3940256099942544/5662855259
È stato appositamente configurato per restituire annunci di prova per ogni richiesta e puoi utilizzarlo nelle tue 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 l'articolo Annunci di prova.
Modificare la delega dell'app
Gli annunci apertura app vengono mostrati quando l'applicazione viene avviata o quando gli utenti portano l'applicazione in primo piano. Per assicurarti che sia disponibile un annuncio da mostrare quando un utente apre la tua app, ti consigliamo di fare riferimento a un annuncio pronto per l'uso.
Ciò significa che devi precaricare le GADAppOpenAd
prima di poter pubblicare l'annuncio.
In questo modo, l'annuncio apertura app sarà pronto per la pubblicazione la prossima volta che l'app verrà aperta. Per facilitare l'utilizzo di un unico riferimento all'annuncio, aggiungi la proprietà e i metodi seguenti a AppDelegate.h
:
#import <GoogleMobileAds/GoogleMobileAds.h>
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property(strong, nonatomic) UIWindow* window;
@property(strong, nonatomic) GADAppOpenAd* appOpenAd;
- (void)requestAppOpenAd;
- (void)tryToPresentAd;
@end
Tieni presente che devi rendere i metodi di richiesta e presentazione accessibili al di fuori del tuo corso AppDelegate
in modo da poterli chiamare dal tuo UISceneDelegate
per i dispositivi con iOS 13 e versioni successive. Ne parleremo più in dettaglio più avanti.
In AppDelegate.m
, aggiungi il metodo requestAppOpenAd
:
- (void)requestAppOpenAd {
self.appOpenAd = nil;
[GADAppOpenAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/5662855259"
request:[GADRequest request]
orientation:UIInterfaceOrientationPortrait
completionHandler:^(GADAppOpenAd *_Nullable appOpenAd, NSError *_Nullable error) {
if (error) {
NSLog(@"Failed to load app open ad: %@", error);
return;
}
self.appOpenAd = appOpenAd;
}];
}
Questo metodo invia una richiesta per caricare un nuovo GADAppOpenAd
. In caso di esito positivo, la proprietà viene impostata su AppDelegate
in modo che l'annuncio sia pronto per essere utilizzato dagli utenti che portano l'app in primo piano.
È necessario impostare l'orientamento. Se l'orientamento è impostato su
UIInterfaceOrientationUnknown
, GADAppOpenAd
assume un orientamento
verticale. Se volete progettare un layout orizzontale, assicuratevi di specificare che è necessario un orientamento orizzontale passando per UIInterfaceOrientationLandscapeLeft
o UIInterfaceOrientationLandscapeRight
al metodo di richiesta.
A questo punto, aggiungi un metodo per visualizzare l'annuncio dalla AppDelegate
.
- (void)tryToPresentAd {
if (self.appOpenAd) {
UIViewController *rootController = self.window.rootViewController;
[self.appOpenAd presentFromRootViewController:rootController];
} else {
// If you don't have an ad ready, request one.
[self requestAppOpenAd];
}
}
Questo metodo verifica la presenza di un annuncio e, se esiste e può essere mostrato dal controller della visualizzazione principale, mostrerà l'annuncio sui tuoi contenuti esistenti. Se non è disponibile alcun annuncio, il metodo effettua una nuova richiesta.
Rileva gli eventi in primo piano nell'app
Quando un utente accede alla tua app per la prima volta, è improbabile che tu disponga di un riferimento annuncio pronto per essere utilizzato. Devi invece usare il metodo tryToPresentAd
definito sopra, che mostra un annuncio se disponibile, o richiedine uno nuovo. Questo metodo deve essere chiamato ogni volta che la tua app entra in primo piano. Puoi eseguire questa operazione eseguendo l'override del metodo applicationDidBecomeActive:
nel tuo AppDelegate
:
- (void)applicationDidBecomeActive:(UIApplication *)application {
[self tryToPresentAd];
}
Gestire i callback di presentazione
Quando nella tua app viene mostrato un annuncio apertura app, devi utilizzare GADFullScreenContentDelegate
per gestire determinati eventi di presentazione. In particolare, dovrai richiedere il prossimo annuncio apertura app al termine della presentazione.
Apporta le seguenti modifiche al file AppDelegate.h
:
#import <GoogleMobileAds/GoogleMobileAds.h>
#import <UIKit/UIKit.h>
@interface AppDelegate
: UIResponder <UIApplicationDelegate, GADFullScreenContentDelegate>
@property(strong, nonatomic) UIWindow* window;
@property(strong, nonatomic) GADAppOpenAd* appOpenAd;
- (void)requestAppOpenAd;
- (void)tryToPresentAd;
@end
Quindi, nel tuo file AppDelegate.m, aggiungi le seguenti righe:
- (void)requestAppOpenAd {
self.appOpenAd = nil;
[GADAppOpenAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/5662855259"
request:[GADRequest request]
orientation:UIInterfaceOrientationPortrait
completionHandler:^(GADAppOpenAd *_Nullable appOpenAd, NSError *_Nullable error) {
if (error) {
NSLog(@"Failed to load app open ad: %@", error);
return;
}
self.appOpenAd = appOpenAd;
self.appOpenAd.fullScreenContentDelegate = self;
}];
}
#pragma mark - GADFullScreenContentDelegate
/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
NSLog(@"didFailToPresentFullScreenContentWithError");
[self requestAppOpenAd];
}
/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"adWillPresentFullScreenContent");
}
/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
NSLog(@"adDidDismissFullScreenContent");
[self requestAppOpenAd];
}
...
Questi callback gestiscono diversi eventi del ciclo di vita dell'annuncio apertura app.
Considera la scadenza dell'annuncio
Per assicurarti di non mostrare un annuncio scaduto, puoi aggiungere al delegato dell'app un metodo per controllare il tempo trascorso dal caricamento del riferimento annuncio.
In AppDelegate.h
, aggiungi una proprietà NSDate
:
#import <GoogleMobileAds/GoogleMobileAds.h>
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property(strong, nonatomic) UIWindow* window;
@property(strong, nonatomic) GADAppOpenAd* appOpenAd;
@property(weak, nonatomic) NSDate *loadTime;
- (void)requestAppOpenAd;
- (void)tryToPresentAd;
@end
Puoi quindi aggiungere un metodo che restituisca true
se è trascorso meno di un certo numero di ore dal caricamento dell'annuncio.
In AppDelegate.m
aggiungi il seguente metodo:
- (BOOL)wasLoadTimeLessThanNHoursAgo:(int)n {
NSDate *now = [NSDate date];
NSTimeInterval timeIntervalBetweenNowAndLoadTime = [now timeIntervalSinceDate:self.loadTime];
double secondsPerHour = 3600.0;
double intervalInHours = timeIntervalBetweenNowAndLoadTime / secondsPerHour;
return intervalInHours < n;
}
Il passaggio successivo consiste nell'impostare la proprietà loadTime
quando viene caricato l'annuncio:
- (void)requestAppOpenAd {
self.appOpenAd = nil;
[GADAppOpenAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/5662855259"
request:[GADRequest request]
orientation:UIInterfaceOrientationPortrait
completionHandler:^(GADAppOpenAd *_Nullable appOpenAd, NSError *_Nullable error) {
if (error) {
NSLog(@"Failed to load app open ad: %@", error);
return;
}
self.appOpenAd = appOpenAd;
self.appOpenAd.fullScreenContentDelegate = self;
self.loadTime = [NSDate date];
}];
}
Infine, assicurati di controllare la validità del riferimento dell'annuncio prima di provare a mostrarlo:
- (void)tryToPresentAd {
if (self.appOpenAd && [self wasLoadTimeLessThanNHoursAgo:4]) {
UIViewController *rootController = self.window.rootViewController;
[self.appOpenAd presentFromRootViewController:rootController];
} else {
// If you don't have an ad ready, request one.
[self requestAppOpenAd];
}
}
Avvio a freddo e caricamento delle schermate
La documentazione riportata sopra presuppone che tu mostri annunci apertura app solo quando gli utenti mettono in primo piano la tua app quando è sospesa in memoria. Gli "avvii a freddo" si verificano quando l'app viene avviata, ma non è stata sospesa in memoria in precedenza.
Un esempio di avvio a freddo è quando un utente apre la tua app per la prima volta. Con gli avvii a freddo, non avrai un annuncio apertura app caricato in precedenza pronto per essere mostrato immediatamente. Il ritardo tra la richiesta di un annuncio e la ricezione di un annuncio può creare una situazione in cui gli utenti possono utilizzare brevemente la tua app prima di essere sorpresi da un annuncio fuori contesto. Questo andrebbe evitato perché è un'esperienza utente negativa.
Il modo migliore per usare gli annunci apertura app in avvii a freddo è usare una schermata di caricamento per caricare gli asset del gioco o dell'app e mostrare l'annuncio solo dalla schermata di caricamento. Se l'app ha completato il caricamento e ha indirizzato l'utente ai contenuti principali dell'app, non mostrare l'annuncio.
Best practice
Google ha creato annunci apertura app per aiutarti a monetizzare la schermata di caricamento dell'app. Tuttavia, è importante tenere presente le best practice per consentire agli utenti di utilizzare la tua app. Assicurati di:
- Attendi il primo annuncio apertura app fino a quando gli utenti non hanno utilizzato l'app alcune volte.
- Mostra gli annunci apertura app nei momenti in cui gli utenti stanno aspettando il caricamento dell'app.
- Se è stata visualizzata una schermata di caricamento sotto l'annuncio apertura app e il caricamento della schermata di caricamento viene completato prima che l'annuncio venga ignorato, puoi ignorare la schermata di caricamento nel metodo
adDidDismissFullScreenContent
.
Completa l'esempio su GitHub
Passaggi successivi
Scopri di più sulla privacy degli utenti.