La precarga de anuncios automatiza la carga, el almacenamiento en caché y la recarga de anuncios en GMA Next-Gen SDK. Si usas la carga única, migra a la precarga de anuncios para obtener una administración automatizada del ciclo de vida, reintentos administrados y una selección de anuncios optimizada. Para obtener detalles conceptuales sobre la precarga de anuncios, consulta Precarga de anuncios. La precarga de anuncios admite los formatos de anuncios intersticiales, de banner, para inicio de aplicación, recompensados y recompensados intersticiales.
En esta página, se explica cómo migrar una implementación de anuncios de carga única existente a la precarga de anuncios. En esta guía, se usan los anuncios intersticiales como ejemplo, pero puedes aplicar el mismo proceso a los formatos de anuncios admitidos.
Requisitos previos
Antes de continuar, completa lo siguiente:
- Configura GMA Next-Gen SDK.
- Ten una implementación de anuncios de carga única existente.
- Habilita los anuncios de prueba para verificar tu implementación con unidades de anuncios de prueba.
Solicita anuncios con precarga de anuncios
En la carga única, solicitas un solo anuncio para cada solicitud de anuncio. Con la precarga de anuncios, inicias el precargador una vez con tu ID de precarga y la configuración de precarga.
En los siguientes ejemplos, se comparan las solicitudes de anuncios con carga única y precarga de anuncios:
Kotlin
Carga única:
// Request a single ad. val adRequest = AdRequest.Builder(adUnitId).build() InterstitialAd.load(adRequest, adLoadCallback)
Precarga de anuncios:
// Start the preloader once with a preload configuration. val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) InterstitialAdPreloader.start(adUnitId, preloadConfig)
Java
Carga única:
// Request a single ad. AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); InterstitialAd.load(adRequest, adLoadCallback);
Precarga de anuncios:
// Start the preloader once with a preload configuration. AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); InterstitialAdPreloader.start(adUnitId, preloadConfig);
Cambia a devoluciones de llamada de precarga
En la carga única, adjuntas una devolución de llamada de carga a cada solicitud de anuncio individual. Con la precarga de anuncios, registras un objeto de escucha de devolución de llamada para observar las actualizaciones de la caché del precargador. Estas devoluciones de llamada notifican a tu app cuando los anuncios terminan de precargarse, no se cargan o agotan la caché.
En los siguientes ejemplos, se compara cómo registrar devoluciones de llamada de precarga para la carga única y la precarga de anuncios:
Kotlin
Carga única:
// Listen for single ad request load results. val adLoadCallback = object : AdLoadCallback<InterstitialAd> { override fun onAdLoaded(ad: InterstitialAd) { // Ad loaded for a single request. } override fun onAdFailedToLoad(adError: LoadAdError) { Log.d(TAG, "Ad failed to load: ${adError.message}") } } InterstitialAd.load(adRequest, adLoadCallback)
Precarga de anuncios:
// Observe cache updates across multiple ads. val preloadCallback = object : PreloadCallback { override fun onAdPreloaded( preloadId: String, responseInfo: ResponseInfo, ) { // Ad preloaded into the cache and is ready to show. } override fun onAdFailedToPreload( preloadId: String, adError: LoadAdError, ) { Log.d(TAG, "Ad failed to preload: ${adError.message}") } override fun onAdsExhausted(preloadId: String) { // All preloaded ads in the cache have been shown. Log.d(TAG, "Ads exhausted for: $preloadId") } } InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
Java
Carga única:
// Listen for single ad request load results. AdLoadCallback<InterstitialAd> adLoadCallback = new AdLoadCallback<InterstitialAd>() { @Override public void onAdLoaded(@NonNull InterstitialAd ad) { // Ad loaded for a single request. } @Override public void onAdFailedToLoad(@NonNull LoadAdError adError) { Log.d(TAG, "Ad failed to load: " + adError.getMessage()); } }; InterstitialAd.load(adRequest, adLoadCallback);
Precarga de anuncios:
// Observe cache updates across multiple ads. PreloadCallback preloadCallback = new PreloadCallback() { @Override public void onAdPreloaded( @NonNull String preloadId, @NonNull ResponseInfo responseInfo) { // Ad preloaded into the cache and is ready to show. } @Override public void onAdFailedToPreload( @NonNull String preloadId, @NonNull LoadAdError adError) { Log.d(TAG, "Ad failed to preload: " + adError.getMessage()); } @Override public void onAdsExhausted(@NonNull String preloadId) { // All preloaded ads in the cache have been shown. Log.d(TAG, "Ads exhausted for: " + preloadId); } }; InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
El precargador invoca métodos de devolución de llamada cuando GMA Next-Gen SDK carga o almacena en caché un anuncio, o cuando tu app muestra un anuncio.
Muestra anuncios desde la caché
En la carga única, guardas el anuncio cargado en una variable y lo muestras cuando está disponible. Con la precarga de anuncios, cuando un anuncio está disponible para mostrarse, lo recuperas directamente de la caché. En ambos enfoques, adjunta tu objeto de escucha de eventos al anuncio antes de mostrarlo.
En los siguientes ejemplos, se compara la visualización de un anuncio con la precarga de anuncios en comparación con la carga única:
Kotlin
Carga única:
// Retrieve the ad from a saved variable. val interstitialAd = this.interstitialAd ?: return // Display the ad. interstitialAd.show(activity)
Precarga de anuncios:
// Retrieve the ad directly from the preloader cache. val interstitialAd = InterstitialAdPreloader.pollAd(adUnitId) ?: return // Display the ad. interstitialAd.show(activity)
Java
Carga única:
// Retrieve the ad from a saved variable. InterstitialAd interstitialAd = this.interstitialAd; if (interstitialAd == null) { return; } // Display the ad. interstitialAd.show(activity);
Precarga de anuncios:
// Retrieve the ad directly from the preloader cache. InterstitialAd interstitialAd = InterstitialAdPreloader.pollAd(adUnitId); if (interstitialAd == null) { return; } // Display the ad. interstitialAd.show(activity);
Quita el almacenamiento en caché y la recarga manuales
El precargador carga automáticamente un anuncio de reemplazo cuando obtienes el anuncio. A diferencia de la carga única, no es necesario que almacenes referencias de anuncios de forma manual ni que escribas lógica de recarga.
Quita los siguientes patrones de tu código:
- Almacenamiento en caché de variables miembro: Borra las variables miembro que almacenan objetos de anuncios.
- Recargas manuales: Borra las llamadas de carga después de que el usuario descarte el anuncio o no se muestre.
- Temporizadores de reintento personalizados: Borra los controladores de reintento, los bucles de retroceso y los temporizadores. GMA Next-Gen SDK vuelve a intentar las solicitudes de precarga fallidas automáticamente.
Compara ejemplos completos
En los siguientes ejemplos, se compara una implementación completa de anuncios intersticiales antes y después de migrar a la precarga de anuncios:
Kotlin
Carga única:
// 1. Maintain a member variable to store the ad. private var interstitialAd: InterstitialAd? = null // 2. Load the ad and listen for load completion. private fun loadAd() { val adRequest = AdRequest.Builder(adUnitId).build() InterstitialAd.load( adRequest, object : AdLoadCallback<InterstitialAd> { override fun onAdLoaded(ad: InterstitialAd) { interstitialAd = ad } override fun onAdFailedToLoad(adError: LoadAdError) { interstitialAd = null } }, ) } // 3. Show the saved ad. private fun showAd(activity: Activity) { val interstitialAd = this.interstitialAd ?: return interstitialAd.adEventCallback = object : InterstitialAdEventCallback { override fun onAdDismissedFullScreenContent() { // Reload the ad after dismissal in single-load integrations. loadAd() } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError, ) { Log.d(TAG, "Ad failed to show: ${fullScreenContentError.message}") } } interstitialAd.show(activity) }
Precarga de anuncios:
// 1. Start preloading with a callback to listen for loaded ads. private fun startPreloading(adUnitId: String) { val preloadCallback = object : PreloadCallback { override fun onAdPreloaded( preloadId: String, responseInfo: ResponseInfo, ) { // Ad preloaded successfully. } override fun onAdFailedToPreload( preloadId: String, adError: LoadAdError, ) { Log.d(TAG, "Ad failed to preload: ${adError.message}") } } val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback) } // 2. Show the ad immediately after polling. private fun showAd(activity: Activity, adUnitId: String) { val interstitialAd = InterstitialAdPreloader.pollAd(adUnitId) ?: return interstitialAd.adEventCallback = object : InterstitialAdEventCallback { override fun onAdDismissedFullScreenContent() { // Preloading automatically fetches a replacement ad. } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError, ) { Log.d(TAG, "Ad failed to show: ${fullScreenContentError.message}") } } interstitialAd.show(activity) }
Java
Carga única:
// 1. Maintain a member variable to store the ad. private InterstitialAd interstitialAd; // 2. Load the ad and listen for load completion. private void loadAd() { AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); InterstitialAd.load( adRequest, new AdLoadCallback<InterstitialAd>() { @Override public void onAdLoaded(@NonNull InterstitialAd ad) { interstitialAd = ad; } @Override public void onAdFailedToLoad(@NonNull LoadAdError adError) { interstitialAd = null; } }); } // 3. Show the saved ad. private void showAd(Activity activity) { if (interstitialAd == null) { return; } interstitialAd.setAdEventCallback( new InterstitialAdEventCallback() { @Override public void onAdDismissedFullScreenContent() { // Reload the ad after dismissal in single-load integrations. loadAd(); } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { Log.d( TAG, "Ad failed to show: " + fullScreenContentError.getMessage()); } }); interstitialAd.show(activity); }
Precarga de anuncios:
// 1. Start preloading with a callback to listen for loaded ads. private void startPreloading(String adUnitId) { PreloadCallback preloadCallback = new PreloadCallback() { @Override public void onAdPreloaded( @NonNull String preloadId, @NonNull ResponseInfo responseInfo) { // Ad preloaded successfully. } @Override public void onAdFailedToPreload( @NonNull String preloadId, @NonNull LoadAdError adError) { Log.d(TAG, "Ad failed to preload: " + adError.getMessage()); } }; AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback); } // 2. Show the ad immediately after polling. private void showAd(Activity activity, String adUnitId) { InterstitialAd interstitialAd = InterstitialAdPreloader.pollAd(adUnitId); if (interstitialAd == null) { return; } interstitialAd.setAdEventCallback( new InterstitialAdEventCallback() { @Override public void onAdDismissedFullScreenContent() { // Preloading automatically fetches a replacement ad. } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { Log.d( TAG, "Ad failed to show: " + fullScreenContentError.getMessage()); } }); interstitialAd.show(activity); }
Próximos pasos
Explora los siguientes recursos para configurar funciones de precarga, integrar formatos de anuncios y probar tu implementación:
- Configura anuncios para inicio de aplicación
- Configura anuncios de banner
- Configura anuncios intersticiales
- Carga un anuncio nativo
- Configura anuncios recompensados
- Configura anuncios intersticiales recompensados