Precarga de anuncios (alfa)

La precarga de anuncios es un proceso de carga y almacenamiento en caché que administra el SDK y que elimina la necesidad de cargar y almacenar en caché los anuncios de forma manual. Este proceso te permite mostrar anuncios cuando sea necesario sin tener que cargarlos manualmente ni controlar las devoluciones de llamada de carga de anuncios.

En esta guía, se explica cómo configurar los anuncios para la precarga, verificar su disponibilidad y obtener y mostrar los anuncios precargados.

Requisitos previos

Antes de continuar con el instructivo, tienes que completar las siguientes tareas:

  • Instalar la versión 0.14.0-alpha01 o una posterior del SDK de anuncios de Google para dispositivos móviles (beta)
  • Completar la Guía de introducción

Comienza a precargar los anuncios

Para comenzar a precargarlos, llama a startPreload(). El SDK de anuncios de Google para dispositivos móviles reintenta automáticamente las solicitudes de anuncios fallidas para las configuraciones precargadas.

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

Kotlin

private fun startPreloading(adUnitID: String) {
  val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  InterstitialAdPreloader.start(adUnitID, preloadConfig)
}

Java

private void startPreloading(String adUnitId) {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}

[Opcional] Modifica la precarga de los anuncios

Para cambiar los anuncios que se precargan, llama a destroy() y, luego, vuelve a llamar a startPreload() con la configuración modificada.

[Opcional] Detén la precarga de los anuncios

Para detener la precarga de anuncios, llama a destroy() con un ID de precarga.

Opcional: Configura el tamaño del búfer

El tamaño del búfer controla la cantidad de anuncios precargados que se almacenan en la memoria. Si tu app muestra anuncios más rápido de lo que se pueden cargar los anuncios nuevos, establece el tamaño del búfer en un valor más grande. Si te preocupa el uso de memoria, establece el tamaño del búfer en un valor bajo, como 2.

Kotlin

private fun setBufferSize(adUnitID: String) {
  val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
  val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 3)
  InterstitialAdPreloader.start(adUnitID, preloadConfig)
}

Java

private void setBufferSize(String adUnitId) {
  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 3);
  InterstitialAdPreloader.start(adUnitId, preloadConfig);
}

Opcional: Recibe notificaciones de precarga

Implementa PreloadCallback para recibir notificaciones de eventos de precarga de anuncios. Para la depuración y el registro, estos eventos proporcionan un objeto de información de la respuesta.

Kotlin

private fun startPreloadingWithCallback(adUnitID: String) {
  val preloadCallback =
    // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
    object : PreloadCallback {
      override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
        Log.i(
          TAG,
          ("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"),
        )
        // [Optional] Get the error response info for additional details.
        // val responseInfo = adError.responseInfo
      }

      override fun onAdsExhausted(preloadId: String) {
        Log.i(TAG, "Interstitial preload ad $preloadId is not available")
      }

      override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
        Log.i(TAG, "Interstitial preload ad $preloadId is available")
      }
    }
  val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
  val preloadConfig = PreloadConfiguration(adRequest)
  InterstitialAdPreloader.start(adUnitID, preloadConfig, preloadCallback)
}

Java

private void startPreloadingWithCallback(String adUnitId) {
  PreloadCallback preloadCallback =
      // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
      new PreloadCallback() {
        @Override
        public void onAdFailedToPreload(String preloadId, LoadAdError adError) {
          Log.e(
              TAG,
              String.format(
                  "Interstitial preload ad %s failed to load with error: %s",
                  preloadId, adError.getMessage()));
          // [Optional] Get the error response info for additional details.
          // ResponseInfo responseInfo = adError.getResponseInfo();
        }

        @Override
        public void onAdsExhausted(String preloadId) {
          Log.i(TAG, "Interstitial preload ad " + preloadId + " is not available");
        }

        @Override
        public void onAdPreloaded(String preloadId, ResponseInfo responseInfo) {
          Log.i(TAG, "Interstitial preload ad " + preloadId + " is available");
        }
      };

  AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
  PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
  InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
}

Obtén y muestra el anuncio precargado

Los anuncios están disponibles para mostrarse una vez que se llama a onAdsAvailable(). Además, se ponen a disposición de forma constante a medida que se muestran y se agotan. Después de obtener un anuncio, escucha los eventos de ciclo de vida del anuncio y muéstralo.

En el siguiente ejemplo, se muestra un anuncio precargado:

Kotlin

private fun pollAndShowAd(activity: Activity, adUnitID: String) {
  // Polling returns the next available ad and loads another ad in the background.
  val ad = InterstitialAdPreloader.pollAd(adUnitID)

  // Interact with the ad object as needed.
  ad?.apply {
    Log.d(TAG, "Interstitial ad response info: ${this.getResponseInfo()}")
    this.adEventCallback =
      object : InterstitialAdEventCallback {
        override fun onAdImpression() {
          Log.d(TAG, "Interstitial ad recorded an impression.")
        }

        override fun onAdPaid(value: AdValue) {
          Log.d(TAG, "Interstitial ad onPaidEvent: ${value.valueMicros} ${value.currencyCode}")
        }
      }

    // Show the ad.
    ad.show(activity)
  }
}

Java

private void pollAndShowAd(Activity activity, String adUnitId) {
  // Polling returns the next available ad and loads another ad in the background.
  final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);

  // Interact with the ad object as needed.
  if (ad != null) {
    Log.d(TAG, "Interstitial ad response info: " + ad.getResponseInfo());
    ad.setAdEventCallback(
        new InterstitialAdEventCallback() {
          @Override
          public void onAdImpression() {
            Log.d(TAG, "Interstitial ad recorded an impression.");
          }

          @Override
          public void onAdPaid(AdValue value) {
            Log.d(
                TAG,
                "Interstitial ad onPaidEvent: "
                    + value.getValueMicros()
                    + " "
                    + value.getCurrencyCode());
          }
        });

    // Show the ad.
    ad.show(activity);
  }
}

Opcional: Verifica la disponibilidad de anuncios precargados

Para saber si hay anuncios disponibles, llama a isAdAvailable:

Kotlin

private fun isAdAvailable(adUnitID: String): Boolean {
  return InterstitialAdPreloader.isAdAvailable(adUnitID)
}

Java

private boolean isAdAvailable(String adUnitId) {
  return InterstitialAdPreloader.isAdAvailable(adUnitId);
}