Annunci nativi

Gli annunci nativi sono asset annuncio che vengono presentati agli utenti tramite componenti dell'interfaccia utente nativi della piattaforma. Vengono mostrati utilizzando le stesse classi già utilizzate nei tuoi 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 contenente gli asset e sarà responsabile della loro visualizzazione, anziché l'SDK Google Mobile Ads.

In linea di massima, l'implementazione degli annunci nativi prevede due fasi: caricare un annuncio utilizzando l'SDK e poi visualizzare i contenuti dell'annuncio nella tua app.

Questa pagina mostra come utilizzare l'SDK per caricare annunci nativi.

Prerequisiti

Effettua sempre test con annunci di prova

Quando crei e testi le tue app, assicurati di utilizzare annunci di prova anziché annunci di produzione pubblicati.

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 prova per ogni richiesta e puoi usarlo nelle tue app durante la programmazione, i 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 prova dell'SDK Google Mobile Ads, consulta Annunci di prova.

Caricare gli annunci

Gli annunci nativi vengono caricati con la classe GADAdLoader che invia messaggi ai propri 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 = GADAdLoader(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;

Devi disporre di un ID unità pubblicitaria (puoi utilizzare l'ID di test), delle costanti da passare nell'array adTypes per specificare i formati nativi che vuoi richiedere e di eventuali opzioni da impostare nel parametro options. L'elenco dei possibili valori per il parametro options è disponibile nella pagina Impostazione delle opzioni per gli annunci nativi.

L'array adTypes deve contenere questa costante:

Implementare il delegato del caricatore di annunci

Il delegato del caricamento degli annunci deve implementare protocolli specifici per il tipo di annuncio. Per gli annunci nativi, il protocollo GADNativeAdLoaderDelegate include un messaggio che viene inviato al delegato quando viene caricato un annuncio nativo.

Swift

public func adLoader(_ adLoader: GADAdLoader,
            didReceive nativeAd: GADNativeAd)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd;

Richiedi annunci

Dopo aver inizializzato GADAdLoader, chiama il relativo metodo loadRequest: per richiedere un annuncio:

Swift

adLoader.load(GADRequest())

Objective-C

[self.adLoader loadRequest:[GADRequest request]];

Il metodo loadRequest: in GADAdLoader accetta gli stessi GADRequest oggetti di banner e interstitial. Puoi utilizzare gli oggetti di richiesta per aggiungere informazioni sul targeting, proprio come faresti con altri tipi di annunci.

Carica più annunci (facoltativo)

Per caricare più annunci in una singola richiesta, imposta l'oggetto GADMultipleAdsAdLoaderOptions quando inizzializzi un GADAdLoader.

Swift

let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(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 restituirà il numero esatto di annunci richiesti.

Gli annunci Google restituiti saranno tutti diversi tra loro, anche se non è garantito che gli annunci provenienti dall'inventario riservato o da acquirenti di terze parti siano unici.

Non utilizzare la classe GADMultipleAdsAdLoaderOptions se utilizzi la mediazione, poiché al momento le richieste di più annunci nativi non funzionano per gli ID unità pubblicitarie 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:

Una richiesta di un singolo annuncio comporterà una chiamata a uno di questi metodi.

Una richiesta di più annunci comporterà almeno un callback ai metodi sopra indicati, ma non più del numero massimo di annunci richiesti.

Inoltre, GADAdLoaderDelegate offre il callback adLoaderDidFinishLoading. Questo metodo del delegato indica che un caricatore di annunci ha completato il caricamento degli annunci e che 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, GADNativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
    multipleAdOptions.numberOfAds = 5;
    adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
        // The UIViewController parameter is optional.
        rootViewController: rootViewController,
        adTypes: [ .native ],
        options: [ multipleAdOptions ])

    adLoader.delegate = self
    adLoader.load(GADRequest())
  }

  func adLoader(_ adLoader: GADAdLoader,
       didReceive nativeAd: GADNativeAd) {
    // A native ad has loaded, and can be displayed.
  }

  func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
    // 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 non riesce a caricare gli annunci.

Swift

public func adLoader(_ adLoader: GADAdLoader,
    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;

Poi implementa GADNativeAdDelegate per ricevere le seguenti chiamate delegati:

Swift

func nativeAdDidRecordImpression(_ nativeAd: GADNativeAd) {
  // The native ad was shown.
}

func nativeAdDidRecordClick(_ nativeAd: GADNativeAd) {
  // The native ad was clicked on.
}

func nativeAdWillPresentScreen(_ nativeAd: GADNativeAd) {
  // The native ad will present a full screen view.
}

func nativeAdWillDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad will dismiss a full screen view.
}

func nativeAdDidDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad did dismiss a full screen view.
}

func nativeAdWillLeaveApplication(_ nativeAd: GADNativeAd) {
  // 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 eseguire la memorizzazione nella cache dell'elenco di annunci.

  • Quando esegui la pre-memorizzazione degli annunci nella cache, svuota la cache e ricarica la pagina dopo un'ora.

  • Non chiamare di nuovo loadRequest: su un GADAdLoader finché il caricamento della richiesta precedente non è terminato, come indicato da adLoaderDidFinishLoading:.

  • Limita la memorizzazione nella cache degli annunci nativi solo a ciò che è necessario. Ad esempio, durante il pre-caching, memorizza nella cache solo gli annunci immediatamente visibili sullo schermo. Gli annunci nativi hanno un utilizzo di memoria elevato e la memorizzazione nella cache degli annunci nativi senza distruggerli si traduce in un utilizzo eccessivo di memoria.

  • Elimina gli annunci nativi quando non sono più in uso.

Mostrare l'annuncio

Dopo aver caricato un annuncio, non resta che mostrarlo agli utenti. Consulta la nostra guida avanzata per scoprire come.