Precarga de anuncios (beta)

La precarga de anuncios es una función de carga de anuncios administrada por Google en Google Mobile Ads SDK que se encarga de cargar y almacenar en caché los anuncios en tu nombre. La precarga de anuncios requiere un cambio en la forma en que administras la carga de anuncios. Para optimizar el rendimiento con la precarga de anuncios, inhabilita el almacenamiento en caché personalizado y delega esa responsabilidad a Google Mobile Ads SDK.

La precarga de anuncios ofrece los siguientes beneficios en comparación con la carga manual de anuncios:

  • Administración de referencias: Conserva los anuncios cargados para que no tengas que mantener las referencias hasta que tengas todo listo para mostrarlos.
  • Recarga automática: Carga automáticamente un anuncio nuevo cuando extraes uno de la caché.
  • Reintentos administrados: Reintenta automáticamente las solicitudes con errores con la retirada exponencial.
  • Administración de vencimientos: Actualiza automáticamente los anuncios antes de que venzan (por lo general, después de una hora).
  • Optimización de la caché: Si usas un tamaño de caché superior a uno, Google Mobile Ads SDK optimiza el orden de la caché para publicar el mejor anuncio.

Esta guía abarca cómo configurar los anuncios para la precarga, verificar su disponibilidad y mostrar los anuncios precargados.

Requisitos previos

Antes de continuar con este instructivo, debes configurar Google Mobile Ads SDK.

Empieza a precargar los anuncios

Cuando se inicie la app, llama al método preload una vez. Después de llamar al método preload, Google Mobile Ads SDK precarga automáticamente los anuncios y reintenta las solicitudes fallidas para las configuraciones precargadas.

En el siguiente ejemplo, se inicia la precarga de anuncios:

Swift

// 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

// 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];

Obtén y muestra los anuncios precargados

Cuando se usa la precarga de anuncios, Google Mobile Ads SDK conserva los anuncios almacenados en caché. Cuando quieras mostrar un anuncio, llama al método adWithPreloadID. Google Mobile Ads SDK recupera un anuncio disponible y precarga automáticamente el siguiente anuncio en segundo plano.

Evita llamar al método adWithPreloadID hasta que todo esté listo para mostrar un anuncio. Mantener los anuncios en la caché permite que Google Mobile Ads SDK actualice automáticamente los anuncios vencidos y realice la optimización de la caché.

En el siguiente ejemplo, se recupera y muestra un anuncio precargado:

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];
}

Obtén metadatos de anuncios precargados

Para obtener los metadatos de un anuncio precargado, puedes buscar el objeto de información de respuesta del anuncio. Este proceso te permite inspeccionar los metadatos del anuncio sin quitarlo de la caché.

En el siguiente ejemplo, se buscan los metadatos de un anuncio precargado en el objeto de información de la respuesta:

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);
  }
}

Verifica la disponibilidad de anuncios precargados

Para verificar la disponibilidad de anuncios, elige una de las siguientes opciones:

Obtén la disponibilidad de anuncios precargados

En el siguiente ejemplo, se verifica la disponibilidad de anuncios:

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];
}

Escucha la disponibilidad de anuncios precargados

Regístrate para recibir eventos de precarga y recibir notificaciones cuando los anuncios se precarguen correctamente, no se precarguen o se agote la caché de anuncios.

Los eventos de precarga se usan con fines de análisis. Dentro de las devoluciones de llamada de eventos de precarga:

  • No llames a preload.
  • Evita llamar a adWithPreloadID, a menos que el anuncio se muestre de inmediato.

En el siguiente ejemplo, se registran los eventos de anuncios:

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);
}

Detén la precarga de los anuncios

Si no necesitas volver a mostrar anuncios para un ID de carga previa en la sesión, puedes detener la carga previa de anuncios. Para detener la precarga de anuncios para un ID de precarga específico, llama a stopPreloadingAndRemoveAdsForPreloadID con un ID de precarga. Para detener la precarga de todos los precargadores, llama a stopPreloadingAndRemoveAllAds.

Establece el tamaño del búfer

El tamaño del búfer controla la cantidad de anuncios precargados que se almacenan en la memoria. De forma predeterminada, Google optimiza el tamaño del búfer para equilibrar el consumo de memoria y la latencia de publicación de anuncios. Si tu app muestra anuncios antes de que se cargue el siguiente, puedes establecer un tamaño de búfer personalizado para aumentar la cantidad de anuncios que se conservan en la memoria.

Swift

let preloadConfig = PreloadConfigurationV2(adUnitID: adUnitID)
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
preloadConfig.bufferSize = 2

Objective-C

GADPreloadConfigurationV2 *preloadConfig =
    [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:adUnitID];
// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
preloadConfig.bufferSize = 2;

Límites de la caché de precarga

Google Mobile Ads SDK aplica un límite para toda la app en la cantidad total de anuncios precargados en todas las unidades de anuncios y los IDs de precarga:

  • Límite predeterminado: Google Mobile Ads SDK contiene un máximo de 6 anuncios precargados en la memoria. Este límite se comparte entre todos los formatos y los IDs de precarga.
  • Recomendamos mantener un tamaño de búfer de dos para cada ID de carga previa.