La precarga de anuncios es una función de carga de anuncios administrada por Google en GMA Next-Gen SDK que administra la carga y el almacenamiento en caché de 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 GMA Next-Gen SDK.
La precarga de anuncios ofrece los siguientes beneficios en comparación con la carga de anuncios manual:
- Administración de referencias: Contiene anuncios cargados para que no tengas que mantener referencias hasta que estés listo para mostrarlos.
- Recarga automática: Carga automáticamente un anuncio nuevo cuando sacas uno de la caché.
- Reintentos administrados: Vuelve a intentar automáticamente las solicitudes fallidas con la retirada exponencial.
- Control de vencimiento: 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, GMA Next-Gen SDK optimiza el orden de la caché para publicar el mejor anuncio.
En esta guía, se explica cómo configurar los anuncios para la precarga, verificar su disponibilidad y mostrar los anuncios precargados.
Requisitos previos
Antes de continuar con el instructivo, tienes que completar las siguientes tareas:
- Instala la versión 0.14.0-alpha01 o una posterior de GMA Next-Gen SDK.
- Configura GMA Next-Gen SDK.
- [Opcional] Descarga y ejecuta la app de ejemplo.
Empieza a precargar los anuncios
Para comenzar a precargar anuncios, llama a startPreload(). Llama a este método
solo una vez al inicio de la app. Después de llamar a
startPreload(), GMA Next-Gen SDK precarga automáticamente
los anuncios y vuelve a intentar las solicitudes fallidas para las configuraciones precargadas.
En el siguiente ejemplo, se inicia la precarga de anuncios:
Kotlin
private fun startPreloading(adUnitId: String) {
val 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);
}
Obtén y muestra los anuncios precargados
Cuando se usa la precarga de anuncios, GMA Next-Gen SDK contiene anuncios almacenados en caché.
Cuando quieras mostrar un anuncio, llama a pollAd().
GMA Next-Gen SDK recupera el anuncio disponible y precarga automáticamente
el siguiente anuncio en segundo plano.
Evita llamar a este método hasta que estés listo para mostrar un anuncio. Mantener los anuncios en la caché permite que GMA Next-Gen SDK actualice automáticamente los anuncios vencidos y realice la optimización de la caché.
En el siguiente ejemplo, se recupera y 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);
}
}
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:
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean {
return InterstitialAdPreloader.isAdAvailable(adUnitId)
}
Java
private boolean isAdAvailable(String adUnitId) {
return InterstitialAdPreloader.isAdAvailable(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 puedan precargar o se agote la caché de anuncios.
Los eventos de precarga están destinados a fines de estadísticas. Dentro de las devoluciones de llamada de eventos de precarga:
- No llames a
startPreload(). - Evita llamar a
pollAd()a menos que el anuncio se muestre de inmediato.
En el siguiente ejemplo, se registra para recibir eventos de anuncios:
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")
// [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
}
override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
Log.i(TAG, "Interstitial preload ad $preloadId is available")
}
}
val 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");
// [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted.
}
@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);
}
Detén la precarga de los anuncios
Si no necesitas volver a mostrar anuncios para un ID de precarga en la sesión, puedes detener la precarga de anuncios. Para detener la precarga de anuncios para un ID de precarga específico, llama a destroy() con un ID de precarga.
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. 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 anuncio, puedes establecer un tamaño de búfer personalizado para aumentar la cantidad de anuncios que se conservan en la memoria. Recomendamos un tamaño de búfer de cuatro como máximo.
Kotlin
private fun setBufferSize(adUnitId: String) {
val 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);
}