En esta guía, se explica cómo integrar anuncios recompensados en una app para Android.
Antes de comenzar
Antes de continuar, haz lo siguiente:
- Configura GMA Next-Gen SDK.
- Usa el ID de unidad de anuncios recompensados de prueba
/6499/example/rewarded.- Al compilar y verificar tu app, asegúrate de usar anuncios de prueba en vez de anuncios en producción activos. Si no usas el ID de la unidad de anuncios de prueba, Google puede suspender tu cuenta.
- Antes de publicar tu app, reemplaza este ID por tu ID de unidad de anuncios.
- Para obtener detalles sobre los anuncios de prueba GMA Next-Gen SDK, consulta Habilita los anuncios de prueba.
Información sobre la precarga de anuncios (beta)
La precarga de anuncios (beta) en GMA Next-Gen SDK automatiza la carga y el almacenamiento en caché de anuncios.
La precarga de anuncios proporciona los siguientes beneficios:
- Administración de referencias: Mantiene las referencias hasta que se muestran los anuncios.
- Recarga automática: Carga un anuncio nuevo cuando se recupera uno del caché.
- Reintentos administrados: Carga un anuncio nuevo cuando no se puede cargar uno.
- Control de vencimiento: Actualiza los anuncios antes de que venzan.
- Optimización del caché: Optimiza el orden del caché para publicar el anuncio de mayor prioridad.
Comienza la precarga de anuncios
Para comenzar a precargar anuncios, llama al método start una vez al inicio de la app. Después de llamar al método start,
GMA Next-Gen SDK precarga automáticamente los anuncios y reintenta las solicitudes fallidas para
las configuraciones precargadas.
En el siguiente ejemplo, se muestra cómo comenzar a precargar anuncios:
Kotlin
Java
Reemplaza AD_UNIT_ID por tu ID de unidad de anuncios.
En el ejemplo anterior, se muestra cómo usar el ID de unidad de anuncios como ID de precarga. Un ID de precarga es un identificador de cadena que creas para identificar una configuración de precarga de anuncios. Si tu app requiere varias configuraciones de segmentación para el mismo ID de unidad de anuncios, pasa un identificador de cadena personalizado.
Obtén y muestra los anuncios precargados
Cuando quieras mostrar un anuncio, llama al método pollAd.
GMA Next-Gen SDK recupera un anuncio disponible y precarga automáticamente el siguiente anuncio
en segundo plano. Si no hay anuncios disponibles, GMA Next-Gen SDK no devuelve ningún anuncio.
Cuando tengas un objeto de anuncio disponible, llama al método show para mostrar el anuncio.
Usa un objeto de escucha de recompensas para controlar los eventos recompensados. En el siguiente ejemplo, se muestra cómo recuperar y mostrar un anuncio precargado:
Kotlin
Java
Evita llamar al método pollAd hasta que estés listo para mostrar un anuncio. Para leer la información de la respuesta de solicitud de anuncio sin mostrarla, consulta
Lee la información de la respuesta de solicitud de anuncio.
Escucha eventos de anuncios
Antes de mostrar el anuncio, escucha los eventos de anuncios. En el siguiente ejemplo, se muestra cómo registrar devoluciones de llamada para eventos de anuncios:
Kotlin
private fun listenToAdEvents() { // Listen for ad events. val ad = rewardedAd if (ad == null) { Log.e(TAG, "Rewarded ad is not ready yet.") return } ad.adEventCallback = object : RewardedAdEventCallback { override fun onAdShowedFullScreenContent() { // Rewarded ad did show. } override fun onAdDismissedFullScreenContent() { // Rewarded ad did dismiss. rewardedAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // Rewarded ad failed to show. Log.e(TAG, "Rewarded ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // Rewarded ad did record an impression. } override fun onAdClicked() { // Rewarded ad did record a click. } } }
Java
private void listenToAdEvents() { // Listen for ad events. if (rewardedAd == null) { Log.e(TAG, "Rewarded ad is not ready yet."); return; } rewardedAd.setAdEventCallback( new RewardedAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // Rewarded ad did show. } @Override public void onAdDismissedFullScreenContent() { // Rewarded ad did dismiss. rewardedAd = null; } @Override public void onAdFailedToShowFullScreenContent( FullScreenContentError fullScreenContentError) { // Rewarded ad failed to show. Log.e(TAG, "Rewarded ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // Rewarded ad did record an impression. } @Override public void onAdClicked() { // Rewarded ad did record a click. } }); }
Opcional: Valida las devoluciones de llamada de verificación del servidor (SSV)
Si tu app necesita datos adicionales en las devoluciones de llamada de verificación del servidor, usa la función de datos personalizados de los anuncios recompensados. Todos los valores de cadena establecidos en un objeto de anuncio recompensado se pasan al parámetro de consulta custom_data de la devolución de llamada de SSV. Si no se establece ningún valor de datos personalizados, el valor del parámetro de consulta custom_data no estará presente en la devolución de llamada de SSV.
En la siguiente muestra de código, se indica cómo establecer datos personalizados en un objeto de anuncio recompensado antes de mostrar el anuncio.
Kotlin
Java
Reemplaza SAMPLE_CUSTOM_DATA_STRING por tus datos personalizados.
Opcional: Escucha eventos de precarga
Cuando comiences a precargar anuncios, regístrate para recibir eventos de precarga y recibir notificaciones cuando los anuncios se precarguen correctamente, no se puedan precargar o se agote el caché de anuncios.
En el siguiente ejemplo, se muestra cómo registrar eventos de precarga de anuncios:
Kotlin
val preloadCallback = object : PreloadCallback { override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) { Log.d(TAG, "Rewarded preload ad $preloadId failed to load with error: ${adError.message}") } override fun onAdsExhausted(preloadId: String) { Log.i(TAG, "Rewarded preload ad $preloadId is not available") } override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) { Log.i(TAG, "Rewarded preload ad $preloadId is available") } } val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) RewardedAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
Java
PreloadCallback preloadCallback = new PreloadCallback() { @Override public void onAdFailedToPreload(String preloadId, LoadAdError adError) { Log.d( TAG, String.format( "Rewarded preload ad %s failed to load with error: %s", preloadId, adError.getMessage())); } @Override public void onAdsExhausted(String preloadId) { Log.i(TAG, "Rewarded preload ad " + preloadId + " is not available"); } @Override public void onAdPreloaded(String preloadId, ResponseInfo responseInfo) { Log.i(TAG, "Rewarded preload ad " + preloadId + " is available"); } }; AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); RewardedAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
Cuando no se puede cargar un anuncio, GMA Next-Gen SDK precarga automáticamente los anuncios y reintenta las solicitudes fallidas para las configuraciones precargadas.
Opcional: Verifica la disponibilidad de anuncios
Si necesitas saber si un anuncio está disponible, verifica la disponibilidad de anuncios. En el siguiente ejemplo, se muestra cómo verificar si un anuncio precargado está disponible:
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean { return RewardedAdPreloader.isAdAvailable(adUnitId) }
Java
private boolean isAdAvailable(String adUnitId) { return RewardedAdPreloader.isAdAvailable(adUnitId); }
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. 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. Puedes establecer un tamaño de búfer personalizado para aumentar la cantidad de anuncios que se conservan en la memoria.
En el siguiente ejemplo, se muestra cómo establecer un tamaño de búfer de dos anuncios precargados:
Kotlin
val adRequest = AdRequest.Builder(adUnitId).build() // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads. val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2) RewardedAdPreloader.start(adUnitId, preloadConfig)
Java
AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads. PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2); RewardedAdPreloader.start(adUnitId, preloadConfig);
Límites de caché de precarga
GMA Next-Gen SDK aplica un límite en toda la app para la cantidad total de anuncios precargados en todas las unidades de anuncios y los IDs de precarga:
- Límite predeterminado: Google almacena un máximo de seis anuncios precargados en la memoria. Este límite se comparte en todos los formatos y los IDs de precarga.
- Recomendamos mantener un tamaño de búfer de dos para cada ID de precarga.
Opcional: Detén la precarga de los anuncios
Si no necesitas volver a mostrar anuncios para un ID de precarga específico en la sesión, puedes detener la precarga de anuncios. Para detener la carga de anuncios para un ID de precarga específico, llama al método destroy con un ID de precarga. Si llamas al método destroy, se quitarán del caché todos los anuncios precargados asociados con el ID de precarga.
En el siguiente ejemplo, se muestra cómo detener la precarga de los anuncios:
Kotlin
private fun stopPreloading(adUnitId: String) { // Stops the preloading and destroy preloaded ads. RewardedAdPreloader.destroy(adUnitId) }
Java
private void stopPreloading(String adUnitId) { // Stops the preloading and destroy preloaded ads. RewardedAdPreloader.destroy(adUnitId); }
Opcional: Lee la información de la respuesta
Lee la información de la respuesta del siguiente anuncio precargado sin quitar el anuncio del caché.
En el siguiente ejemplo, se muestra cómo leer la información de la respuesta del siguiente anuncio precargado:
Kotlin
val responseInfo = RewardedAdPreloader.peekAdResponseInfo(preloadId) if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info.") return } Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")
Java
ResponseInfo responseInfo = RewardedAdPreloader.peekAdResponseInfo(preloadId); if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info."); return; } Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());