Gli annunci nativi sono asset pubblicitari presentati agli utenti tramite componenti dell'interfaccia utente nativi della piattaforma. Vengono visualizzati utilizzando le stesse classi che già utilizzi negli storyboard e possono essere formattati in modo da corrispondere al design visivo della tua app.
Quando viene caricato un annuncio nativo, la tua app riceve un oggetto annuncio che contiene le relative risorse e l'app, anziché l'SDK Google Mobile Ads, è responsabile della visualizzazione.
In generale, l'implementazione efficace degli annunci nativi si articola in due parti: Caricamento di un annuncio utilizzando l'SDK e visualizzazione dei contenuti dell'annuncio nell'app.
Questa pagina mostra come utilizzare l'SDK per caricare annunci nativi.
Prerequisiti
- Completa la Guida introduttiva.
Esegui sempre i test con gli annunci di prova
Quando crei ed esegui test sulle tue app, assicurati di utilizzare annunci di prova anziché annunci di produzione live.
Il modo più semplice per caricare gli annunci di prova è utilizzare il nostro ID unità pubblicitaria di prova dedicato per gli annunci nativi su iOS:
ca-app-pub-3940256099942544/3986624511
È stato configurato appositamente per restituire annunci di test per ogni richiesta e puoi utilizzarlo nelle tue app durante la codifica, il test e il debug. Assicurati solo di sostituirlo con il tuo ID unità pubblicitaria prima di pubblicare l'app.
Per saperne di più sul funzionamento degli annunci di test dell'SDK Google Mobile Ads, consulta Annunci di test.
Carica annunci
Gli annunci nativi vengono caricati con la classe
GADAdLoader
, che invia messaggi ai suoi delegati in base al protocollo
GADAdLoaderDelegate
.
Inizializza il caricatore di annunci
Prima di poter caricare un annuncio, devi inizializzare il caricatore di annunci.
Il seguente codice mostra come inizializzare un GADAdLoader
:
Swift
adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
// The UIViewController parameter is optional.
rootViewController: rootViewController,
adTypes: [ .native ],
options: [ ... ad loader options objects ... ])
adLoader.delegate = self
Objective-C
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
// The UIViewController parameter is nullable.
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;
Avrai bisogno di un ID unità pubblicitaria (puoi utilizzare l'ID di test), di costanti da inserire nell'array adTypes
per specificare i formati nativi che vuoi richiedere e di eventuali opzioni da impostare nel parametro options
. L'elenco dei valori possibili
per il parametro options
è disponibile nella pagina Impostazione delle opzioni
degli annunci nativi.
L'array adTypes
deve contenere
questa costante :
Implementare il delegato del caricatore di annunci
Il delegato del caricatore di annunci deve implementare protocolli specifici per il tipo di annuncio.
Per gli annunci nativi, il protocollo GADNativeAdLoaderDelegate
include un messaggio
inviato al delegato quando un annuncio nativo è stato caricato.
Swift
public func adLoader(_ adLoader: AdLoader,
didReceive nativeAd: NativeAd)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAd:(GADNativeAd *)nativeAd;
Richiedi annunci
Una volta inizializzato GADAdLoader
, chiama il relativo metodo loadRequest:
per
richiedere un annuncio:
Swift
adLoader.load(Request())
Objective-C
[self.adLoader loadRequest:[GADRequest request]];
Il metodo
loadRequest:
in
GADAdLoader
accetta gli stessi
oggetti
GADRequest
di banner e interstitial. Puoi utilizzare gli oggetti richiesta per aggiungere
informazioni sul targeting, proprio come faresti con altri tipi di annunci.
(Facoltativo) Carica più annunci
Per caricare più annunci in un'unica richiesta, imposta l'oggetto
GADMultipleAdsAdLoaderOptions
quando inizializzi un GADAdLoader
.
Swift
let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
// The UIViewController parameter is optional.
rootViewController: self,
adTypes: [ .native ],
options: [ multipleAdOptions ])
Objective-C
GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
[[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
// The UIViewController parameter is nullable.
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ multipleAdsOptions ]];
Il numero di annunci per richiesta è limitato a cinque e non è garantito che l'SDK restituisca il numero esatto di annunci richiesti.
Gli annunci Google restituiti saranno tutti diversi tra loro, anche se non è garantito che gli annunci provenienti da inventario prenotato o da acquirenti di terze parti siano univoci.
Non utilizzare la classe GADMultipleAdsAdLoaderOptions
se utilizzi la mediazione,
in quanto le richieste di più annunci nativi attualmente non funzionano per gli ID unità pubblicitaria
che sono stati configurati per la mediazione.
Determinare quando il caricamento è terminato
Dopo che un'app chiama loadRequest:
, può ottenere i risultati della richiesta utilizzando
chiamate a:
adLoader:didFailToReceiveAdWithError:
inGADAdLoaderDelegate
adLoader:didReceiveNativeAd:
inGADNativeAdLoaderDelegate
Una richiesta di un singolo annuncio genererà una chiamata a uno di questi metodi.
Una richiesta di più annunci comporterà almeno un callback ai metodi precedenti, ma non più del numero massimo di annunci richiesti.
Inoltre, GADAdLoaderDelegate
offre il callback adLoaderDidFinishLoading
. Questo metodo delegato indica che un caricatore di annunci ha terminato il caricamento
degli annunci e non verranno segnalati altri annunci o errori per la richiesta. Ecco un
esempio di come utilizzarlo quando carichi più annunci nativi contemporaneamente:
Swift
class ViewController: UIViewController, NativeAdLoaderDelegate {
var adLoader: GADAdLoader!
override func viewDidLoad() {
super.viewDidLoad()
let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
// The UIViewController parameter is optional.
rootViewController: rootViewController,
adTypes: [ .native ],
options: [ multipleAdOptions ])
adLoader.delegate = self
adLoader.load(Request())
}
func adLoader(_ adLoader: AdLoader,
didReceive nativeAd: NativeAd) {
// A native ad has loaded, and can be displayed.
}
func adLoaderDidFinishLoading(_ adLoader: AdLoader) {
// The adLoader has finished loading ads, and a new request can be sent.
}
}
Objective-C
@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
[[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
// The UIViewController parameter is nullable.
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ multipleAdsOptions ]];
self.adLoader.delegate = self;
[self.adLoader loadRequest:[GADRequest request]];
}
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAd:(GADNativeAd *)nativeAd {
// A native ad has loaded, and can be displayed.
}
- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
// The adLoader has finished loading ads, and a new request can be sent.
}
@end
Gestione delle richieste non riuscite
I protocolli precedenti estendono il protocollo GADAdLoaderDelegate
, che definisce un messaggio inviato quando gli annunci non vengono caricati.
Swift
public func adLoader(_ adLoader: AdLoader,
didFailToReceiveAdWithError error: NSError)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didFailToReceiveAdWithError:(NSError *)error;
Ricevere notifiche sugli eventi degli annunci nativi
Per ricevere una notifica degli eventi relativi alle interazioni con gli annunci nativi, imposta la proprietà delegate dell'annuncio nativo:
Swift
nativeAd.delegate = self
Objective-C
nativeAd.delegate = self;
Quindi implementa
GADNativeAdDelegate
per ricevere le seguenti chiamate delegate:
Swift
func nativeAdDidRecordImpression(_ nativeAd: NativeAd) {
// The native ad was shown.
}
func nativeAdDidRecordClick(_ nativeAd: NativeAd) {
// The native ad was clicked on.
}
func nativeAdWillPresentScreen(_ nativeAd: NativeAd) {
// The native ad will present a full screen view.
}
func nativeAdWillDismissScreen(_ nativeAd: NativeAd) {
// The native ad will dismiss a full screen view.
}
func nativeAdDidDismissScreen(_ nativeAd: NativeAd) {
// The native ad did dismiss a full screen view.
}
func nativeAdWillLeaveApplication(_ nativeAd: NativeAd) {
// The native ad will cause the app to become inactive and
// open a new app.
}
Objective-C
- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
// The native ad was shown.
}
- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
// The native ad was clicked on.
}
- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
// The native ad will present a full screen view.
}
- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
// The native ad will dismiss a full screen view.
}
- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
// The native ad did dismiss a full screen view.
}
- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
// The native ad will cause the app to become inactive and
// open a new app.
}
Best practice
Segui queste regole quando carichi gli annunci.
Le app che utilizzano annunci nativi in un elenco devono prememorizzare nella cache l'elenco degli annunci.
Quando esegui il precaricamento degli annunci, svuota la cache e ricarica la pagina dopo un'ora.
Non chiamare di nuovo
loadRequest:
su unGADAdLoader
finché il caricamento della richiesta precedente non è terminato, come indicato daadLoaderDidFinishLoading:
.Limita la memorizzazione nella cache degli annunci nativi solo a ciò che è necessario. Ad esempio, durante il precaricamento, memorizza nella cache solo gli annunci immediatamente visibili sullo schermo. Gli annunci nativi hanno un'impronta di memoria elevata e la memorizzazione nella cache degli annunci nativi senza distruggerli comporta un utilizzo eccessivo della memoria.
Elimina gli annunci nativi quando non sono più in uso.
Visualizzare l'annuncio
Una volta caricato un annuncio, non ti resta che mostrarlo agli utenti. Consulta la nostra guida a Native Advanced per scoprire come.