Precaricamento degli annunci (beta)

Seleziona la piattaforma: Android iOS Unity Android (legacy)

Il precaricamento degli annunci è una funzionalità di caricamento degli annunci gestita da Google in Google Mobile Ads SDK che gestisce il caricamento e la memorizzazione nella cache degli annunci per tuo conto. Il precaricamento degli annunci richiede una modifica del modo in cui gestisci il caricamento degli annunci. Per ottimizzare il rendimento utilizzando il precaricamento degli annunci, disattiva la memorizzazione nella cache personalizzata e delega questa responsabilità a Google Mobile Ads SDK.

Il precaricamento degli annunci offre i seguenti vantaggi rispetto al caricamento manuale degli annunci:

  • Gestione dei riferimenti:conserva gli annunci caricati in modo che tu non debba mantenere i riferimenti finché non sono pronti per essere mostrati.
  • Ricarica automatica:carica automaticamente un nuovo annuncio quando ne estrai uno dalla cache.
  • Ripetizioni gestite:ripete automaticamente le richieste non riuscite utilizzando il backoff esponenziale.
  • Gestione della scadenza:aggiorna automaticamente gli annunci prima della scadenza (in genere dopo un'ora).
  • Ottimizzazione della cache: se utilizzi una dimensione della cache maggiore di uno, Google Mobile Ads SDK ottimizza l'ordine della cache per pubblicare l'annuncio migliore.

Questa guida illustra come configurare gli annunci di precaricamento, controllare la disponibilità degli annunci di precaricamento e mostrare l'annuncio di precaricamento.

Prerequisiti

Prima di procedere con questo tutorial, devi configurare Google Mobile Ads SDK.

Inizia il precaricamento degli annunci

Quando l'app si avvia, chiama il metodo preload una sola volta. Dopo aver chiamato il metodo preload, Google Mobile Ads SDK precarica automaticamente gli annunci e riprova a eseguire le richieste non riuscite per le configurazioni di precaricamento.

Il seguente esempio avvia il precaricamento degli annunci:

Swift

private func startPreloading(adUnitID: String) {
  // Start the preloading initialization process.
  let request = Request()
  let interstitialConfig = PreloadConfigurationV2(
    adUnitID: adUnitID, request: request)
  InterstitialAdPreloader.shared.preload(
    for: adUnitID, configuration: interstitialConfig, delegate: self)
}

Objective-C

- (void)startPreloadingWithAdUnitID:(nonnull NSString *)adUnitID {
  // Start the preloading initialization process.
  GADRequest *request = [GADRequest request];
  GADPreloadConfigurationV2 *interstitialConfig =
      [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:adUnitID
                                                  request:request];

  [GADInterstitialAdPreloader.sharedInstance preloadForPreloadID:adUnitID
                                                   configuration:interstitialConfig
                                                        delegate:self];
}

Recupera e mostra l'annuncio di precaricamento

Quando utilizzi il precaricamento degli annunci, Google Mobile Ads SDK conserva gli annunci memorizzati nella cache. Quando vuoi mostrare un annuncio, chiama il metodo adWithPreloadID. Google Mobile Ads SDK recupera un annuncio disponibile e precarica automaticamente l'annuncio successivo in background.

Evita di chiamare il metodo adWithPreloadID finché non è tutto pronto per mostrare un annuncio. Mantenere gli annunci nella cache consente a Google Mobile Ads SDK di aggiornare automaticamente gli annunci scaduti ed eseguire l'ottimizzazione della cache.

Il seguente esempio recupera e mostra un annuncio di precaricamento:

Swift

private func showInterstitialAd(adUnitID: String) {
  // Verify that the preloaded ad is available before polling.
  guard isInterstitialAvailable(adUnitID: adUnitID) else {
    print("Preloaded interstitial ad is not available.")
    return
  }

  // Polling returns the next available ad and loads another ad in the background.
  let ad = InterstitialAdPreloader.shared.ad(with: adUnitID)

  // Interact with the ad object as needed.
  print("Interstitial ad response info: \(String(describing: ad?.responseInfo))")
  ad?.paidEventHandler = { (value: AdValue) in
    print("Interstitial ad paid event: \(value.value), \(value.currencyCode)")
  }

  ad?.fullScreenContentDelegate = self
  ad?.present(from: self)
}

Objective-C

- (void)showInterstitialAdWithAdUnitID:(nonnull NSString *)adUnitID {
  // Verify that the preloaded ad is available before polling.
  if (![self isInterstitialAvailableWithAdUnitID:adUnitID]) {
    NSLog(@"Preloaded interstitial ad is not available.");
    return;
  }

  // Getting the preloaded ad loads another ad in the background.
  GADInterstitialAd *ad =
      [GADInterstitialAdPreloader.sharedInstance adWithPreloadID:adUnitID];

  // Interact with the ad object as needed.
  NSLog(@"Interstitial ad response info: %@", ad.responseInfo);
  ad.paidEventHandler = ^(GADAdValue *_Nonnull value) {
    NSLog(@"Interstitial ad paid event: %@ %@ ", value.value, value.currencyCode);
  };
  ad.fullScreenContentDelegate = self;
  [ad presentFromRootViewController:self];
}

Recupera i metadati dell'annuncio di precaricamento

Per recuperare i metadati dell'annuncio di precaricamento, puoi cercare l'oggetto delle informazioni sulla risposta dell'annuncio. Questa procedura ti consente di esaminare i metadati dell'annuncio senza rimuoverlo dalla cache.

Il seguente esempio cerca i metadati di un annuncio di precaricamento dall'oggetto delle informazioni sulla risposta:

Swift

private func getInterstitialAdResponseInfo(preloadID: String) {
  // Get the response info for the preloaded ad.
  if let responseInfo = InterstitialAdPreloader.shared.responseInfo(
    with: preloadID)
  {
    print("Ad response ID: \(responseInfo.responseIdentifier ?? "")")
  }
}

Objective-C

- (void)getInterstitialAdResponseInfoWithPreloadID:(nonnull NSString *)preloadID {
  // Get the response info for the preloaded ad.
  GADResponseInfo *responseInfo =
      [GADInterstitialAdPreloader.sharedInstance
          adResponseInfoWithPreloadID:preloadID];
  if (responseInfo) {
    NSLog(@"Ad response ID: %@", responseInfo.responseIdentifier);
  }
}

Controlla la disponibilità dell'annuncio di precaricamento

Per verificare la disponibilità degli annunci, scegli una delle seguenti opzioni:

Recupera la disponibilità dell'annuncio di precaricamento

Il seguente esempio verifica la disponibilità degli annunci:

Swift

private func isInterstitialAvailable(adUnitID: String) -> Bool {
  // Verify that an ad is available before polling.
  return InterstitialAdPreloader.shared.isAdAvailable(with: adUnitID)
}

Objective-C

- (BOOL)isInterstitialAvailableWithAdUnitID:(nonnull NSString *)adUnitID {
  // Verify that an ad is available before polling.
  return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:adUnitID];
}

Ascolta la disponibilità dell'annuncio di precaricamento

Registrati per ricevere notifiche sugli eventi di precaricamento quando gli annunci vengono precaricati correttamente, non vengono precaricati o la cache degli annunci è esaurita.

Gli eventi di precaricamento sono destinati a scopi di analisi. All'interno dei callback degli eventi di precaricamento:

  • Non chiamare preload.
  • Evita di chiamare adWithPreloadID a meno che l'annuncio non venga mostrato immediatamente.

Il seguente esempio registra gli eventi degli annunci:

Swift

func adAvailable(forPreloadID preloadID: String, responseInfo: ResponseInfo) {
  // This callback indicates that an ad is available for the specified configuration.
  // No action is required here, but updating the UI can be useful in some cases.
  print("Ad preloaded successfully for ad preload ID: \(preloadID)")
}

func adsExhausted(forPreloadID preloadID: String) {
  // This callback indicates that all the ads for the specified configuration have been
  // consumed and no ads are available to show. No action is required here, but updating
  // the UI can be useful in some cases.
  // Don't call InterstitialAdPreloader.shared.preload or
  // InterstitialAdPreloader.shared.ad from adsExhausted.
  print("Ad exhausted for ad preload ID: \(preloadID)")
}

func adFailedToPreload(forPreloadID preloadID: String, error: Error) {
  print(
    "Ad failed to load with ad preload ID: \(preloadID), Error: \(error.localizedDescription)"
  )
}

Objective-C

- (void)adAvailableForPreloadID:(nonnull NSString *)preloadID
                   responseInfo:(nonnull GADResponseInfo *)responseInfo {
  // This callback indicates that an ad is available for the specified configuration.
  // No action is required here, but updating the UI can be useful in some cases.
  NSLog(@"Ad preloaded successfully for ad unit ID: %@", preloadID);
}

- (void)adsExhaustedForPreloadID:(nonnull NSString *)preloadID {
  // This callback indicates that all the ads for the specified configuration have been
  // consumed and no ads are available to show. No action is required here, but updating
  // the UI can be useful in some cases.
  // Don't call [GAD<Format>AdPreloader preloadForPreloadID:] or
  // [GAD<Format>AdPreloader adWithPreloadID:] from adsExhaustedForPreloadID.
  NSLog(@"Ad exhausted for ad preload ID: %@", preloadID);
}

- (void)adFailedToPreloadForPreloadID:(nonnull NSString *)preloadID
                                error:(nonnull NSError *)error {
  NSLog(@"Ad failed to load with ad preload ID: %@, Error: %@", preloadID,
        error.localizedDescription);
}

Interrompi il precaricamento degli annunci

Se non devi mostrare di nuovo gli annunci per un ID di precaricamento nella sessione, puoi interrompere il precaricamento degli annunci. Per interrompere il precaricamento degli annunci per un ID di precaricamento specifico, chiama stopPreloadingAndRemoveAdsForPreloadID con un ID di precaricamento. Per interrompere il precaricamento per tutti i precaricatori, chiama stopPreloadingAndRemoveAllAds.

Imposta la dimensione del buffer

La dimensione del buffer controlla il numero di annunci di precaricamento mantenuti in memoria. Per impostazione predefinita, Google ottimizza la dimensione del buffer per bilanciare il consumo di memoria e la latenza della pubblicazione degli annunci. Se la tua app mostra gli annunci prima che venga caricato l'annuncio successivo, puoi impostare una dimensione del buffer personalizzata per aumentare il numero di annunci mantenuti in memoria.

Swift

let preloadConfig = PreloadConfigurationV2(adUnitID: "ca-app-pub-3940256099942544/1712485313")
preloadConfig.bufferSize = 3

Objective-C

GADPreloadConfigurationV2 *preloadConfig =
    [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];
preloadConfig.bufferSize = 3;

Limiti della cache di precaricamento

Google Mobile Ads SDK applica un limite a livello di app al numero totale di annunci di precaricamento in tutte le unità pubblicitarie e gli ID di precaricamento:

  • Limite predefinito: Google Mobile Ads SDK mantiene in memoria un massimo di 6 annunci di precaricamento. Questo limite è condiviso tra tutti i formati e gli ID di precaricamento.
  • Ti consigliamo di mantenere una dimensione del buffer di 2 o 3 per ID di precaricamento.