Los anuncios intersticiales son anuncios de pantalla completa que cubren la interfaz de una app hasta que el usuario los cierra. Por lo general, se muestran en puntos de transición naturales en el flujo de una app, como entre actividades o durante la pausa entre niveles de un juego. Cuando una app muestra un anuncio intersticial, el usuario puede presionar el anuncio y continuar a su destino, o bien cerrarlo y regresar a la app. Caso de éxito.
En esta guía, se muestra cómo integrar anuncios intersticiales en apps para Android y iOS con el SDK de Google Mobile Ads en C++.
Requisitos previos
- Completa Comenzar.
- (Solo para Android) Familiaridad con el trabajo con referencias de JNI
jobject
(consulta las sugerencias de JNI de Android).
Realiza siempre pruebas con anuncios de prueba
Cuando compiles y pruebes tus apps, asegúrate de usar anuncios de prueba en vez de anuncios activos en fase de producción. De lo contrario, podría suspenderse tu cuenta.
La forma más sencilla de cargar anuncios de prueba es usar nuestro ID de unidad de anuncios de prueba exclusivo para anuncios intersticiales, que varía según la plataforma del dispositivo:
- Android:
ca-app-pub-3940256099942544/1033173712
- iOS:
ca-app-pub-3940256099942544/4411468910
Se configuraron especialmente para devolver anuncios de prueba en cada solicitud, y puedes usarlos en tus propias apps mientras codificas, pruebas y depuras. Solo asegúrate de reemplazarlo por tu propio ID de unidad de anuncios antes de publicar tu app.
Para obtener más información sobre cómo funcionan los anuncios de prueba del SDK de anuncios para dispositivos móviles, consulta Anuncios de prueba.
Implementación
Estos son los pasos principales para integrar anuncios intersticiales:
- Carga un anuncio.
- Regístrate para recibir devoluciones de llamada.
- Mostrar el anuncio y controlar sus eventos de ciclo de vida
Configura un InterstitialAd
Los anuncios intersticiales se muestran en objetos InterstitialAd
, por lo que el primer paso para integrar anuncios intersticiales en tu app es crear e inicializar un objeto InterstitialAd
.
Agrega el siguiente encabezado al código C++ de tu app:
#include "firebase/gma/interstial_ad.h"
Declara y crea una instancia de un objeto
InterstitialAd
:firebase::gma::InterstitialAd* interstitial_ad; interstitial_ad = new firebase::gma::InterstitialAd();
Inicializa la instancia de
InterstitialAd
con tu vista principal convertida en un tipoAdParent
. La vista principal es una referenciajobject
de JNI a unActivity
de Android o un puntero a unUIView
de iOS.// my_ad_parent is a jobject reference to an Android Activity or // a pointer to an iOS UIView. firebase::gma::AdParent ad_parent = static_cast<firebase::gma::AdParent>(my_ad_parent); firebase::Future<void> result = interstitial_ad->Initialize(ad_parent);
Como alternativa a conservar el futuro como una variable, puedes verificar periódicamente el estado de la operación de inicialización invocando
InitializeLastResult()
en el objetoInterstitialAd
. Esto puede ser útil para hacer un seguimiento del proceso de inicialización en tu bucle de juego global.// Monitor the status of the future in your game loop: firebase::Future<void> result = interstitial_ad->InitializeLastResult(); if (result.status() == firebase::kFutureStatusComplete) { // Initialization completed. if(future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization successful. } else { // An error has occurred. } } else { // Initialization on-going. }
Para obtener más información sobre cómo trabajar con firebase::Future
, consulta Usa Futures para supervisar el estado de finalización de las llamadas a métodos.
Carga un anuncio
Para cargar un anuncio, puedes utilizar el método LoadAd()
en el objeto InterstitialAd
. El método de carga requiere que hayas inicializado el objeto InterstitialAd
y que tengas el ID de tu unidad de anuncios y un objeto AdRequest
. Se devuelve un firebase::Future
que puedes usar para supervisar el estado y el resultado de la operación de carga.
En el siguiente código, se muestra cómo cargar un anuncio una vez que se inicializó correctamente el objeto InterstitialAd
:
firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = interstitial_ad->LoadAd(interstitial_ad_unit_id, ad_request);
Regístrate para recibir devoluciones de llamada
Debes extender la clase FullScreenContentListener
para recibir notificaciones sobre la presentación de anuncios intersticiales y los eventos del ciclo de vida. Tu subclase FullScreenContentListener
personalizada se puede registrar a través del método InterstitialAd::SetFullScreenContentListener()
y recibirá devoluciones de llamada cuando el anuncio se muestre correctamente o no, así como cuando se descarte.
En el siguiente código, se muestra cómo extender la clase y asignarla al anuncio:
class ExampleFullScreenContentListener : public firebase::gma::FullScreenContentListener { public: ExampleFullScreenContentListener() {} void OnAdClicked() override { // This method is invoked when the user clicks the ad. } void OnAdDismissedFullScreenContent() override { // This method is invoked when the ad dismisses full screen content. } void OnAdFailedToShowFullScreenContent(const AdError& error) override { // This method is invoked when the ad failed to show full screen content. // Details about the error are contained within the AdError parameter. } void OnAdImpression() override { // This method is invoked when an impression is recorded for an ad. } void OnAdShowedFullScreenContent() override { // This method is invoked when the ad showed its full screen content. } }; ExampleFullScreenContentListener* full_screen_content_listener = new ExampleFullScreenContentListener(); interstitial_ad->SetFullScreenContentListener(full_screen_content_listener);
InterstitialAd
es un objeto de un solo uso. Esto significa que, una vez que se muestra un anuncio intersticial, no se puede volver a mostrar. Una práctica recomendada es cargar otro anuncio intersticial en el método OnAdDismissedFullScreenContent()
de tu FullScreenContentListener
para que el siguiente anuncio intersticial comience a cargarse en cuanto se descarte el anterior.
Muestra el anuncio
Los anuncios intersticiales se deben mostrar durante las pausas naturales en el flujo de una app. Un buen ejemplo es entre los niveles de un juego o después de que el usuario completa una tarea.
Si bien FullScreenContentListener
se puede usar para determinar cuándo un anuncio mostró su contenido de pantalla completa, el futuro que devuelve Show()
también indicará cuándo se mostró el anuncio correctamente.
firebase::Future<void> result = interstitial_ad->Show();
Prácticas recomendadas
- Considera si los anuncios intersticiales son el tipo de anuncio adecuado para tu aplicación.
- Los anuncios intersticiales funcionan mejor en las apps con puntos de transición naturales. La conclusión de una tarea en una app, como compartir una imagen o completar un nivel de un juego, crea un punto de transición. Como el usuario espera una pausa en la acción, es fácil presentar un anuncio intersticial sin interrumpir su experiencia. Asegúrate de tener en cuenta en qué puntos del flujo de trabajo de tu app mostrarás anuncios intersticiales y cómo es probable que responda el usuario.
- Recuerda detener la acción cuando muestres un anuncio intersticial.
- Existen varios tipos de anuncios intersticiales: de texto, con imágenes, de video y muchos más. Es importante asegurarse de que, cuando tu app muestre un anuncio intersticial, también suspenda el uso de algunos recursos para permitir que el anuncio los aproveche. Por ejemplo, cuando llames para mostrar un anuncio intersticial, asegúrate de pausar cualquier salida de audio que produzca tu app. Puedes reanudar la reproducción de sonidos en el método
OnAdDismissedFullScreenContent
de tuFullScreenContentListener
instalado, que se invocará cuando el usuario termine de interactuar con el anuncio. Además, considera detener temporalmente cualquier tarea de procesamiento intenso (como un bucle de juego) mientras se muestra el anuncio. Esto garantizará que el usuario no experimente gráficos lentos o que no respondan, ni videos con interrupciones. - Permite un tiempo de carga adecuado.
- Así como es importante asegurarse de mostrar anuncios intersticiales en un momento adecuado, también es importante asegurarse de que el usuario no tenga que esperar a que se carguen. Cargar el anuncio por anticipado antes de que quieras mostrarlo puede garantizar que tu app tenga un anuncio intersticial completamente cargado y listo cuando llegue el momento de mostrar uno.
- No satures al usuario con anuncios.
- Si bien aumentar la frecuencia de los anuncios intersticiales en tu app puede parecer una excelente manera de incrementar los ingresos, también puede perjudicar la experiencia del usuario y reducir las tasas de clics. Asegúrate de que los usuarios no se vean interrumpidos con tanta frecuencia que ya no puedan disfrutar del uso de tu app.
- No uses el futuro de finalización de la carga para mostrar el anuncio intersticial.
- Esto puede causar una mala experiencia del usuario. En su lugar, carga previamente el anuncio antes de que necesites mostrarlo.
Recursos adicionales
Ejemplo en GitHub
- Consulta el código fuente de nuestra app de inicio rápido de ejemplo en GitHub.
Instructivos en video de Mobile Ads Garage
Historias de éxito
Próximos pasos
- Si aún no lo has hecho, crea tu propia unidad de anuncios intersticiales en la IU de AdMob.
- Obtén información sobre la segmentación de anuncios y los lineamientos sobre anuncios intersticiales.