Los anuncios intersticiales son anuncios a pantalla completa que cubren la interfaz de la aplicación que los aloja. Suelen mostrarse en los puntos de transición naturales de una aplicación; por ejemplo, entre distintas actividades o al pasar de un nivel a otro en un juego. Cuando una aplicación muestra un anuncio intersticial, el usuario tiene la opción de tocarlo e ir a la página de destino, o de cerrarlo y volver a la aplicación. Consulta este caso de éxito.
En esta guía se explica cómo puedes integrar anuncios intersticiales en una aplicación Android.
Requisitos
- Importar el SDK de anuncios de Google para móviles, ya sea de forma independiente o como parte de Firebase.
Crear un objeto de anuncio intersticial
Los anuncios intersticiales se solicitan y muestran mediante objetos InterstitialAd
. Para empezar, debes crear una instancia de InterstitialAd
y especificar el ID del bloque de anuncios. Puedes ver cómo se hace con el método onCreate()
en un objeto Activity:
Java
package ... import com.google.android.gms.ads.interstitial.InterstitialAd; public class MainActivity extends Activity { private InterstitialAd mInterstitialAd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MobileAds.initialize(this, new OnInitializationCompleteListener() { @Override public void onInitializationComplete(InitializationStatus initializationStatus) {} }); mInterstitialAd = new InterstitialAd(this); mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); } }
Kotlin
class MainActivity : Activity() { private lateinit var mInterstitialAd: InterstitialAd override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) MobileAds.initialize(this) {} mInterstitialAd = InterstitialAd(this) mInterstitialAd.adUnitId = "ca-app-pub-3940256099942544/1033173712" } }
Se puede usar un solo objeto InterstitialAd
para solicitar y mostrar varios anuncios intersticiales a lo largo del ciclo de vida útil de una actividad, por lo que solo es necesario crearlo una vez.
Usar siempre anuncios de prueba para probar las aplicaciones
Cuando crees y pruebes tus aplicaciones, utiliza siempre anuncios de prueba en lugar de anuncios reales que se estén publicando. De lo contrario, podríamos suspender tu cuenta.
La forma más sencilla de hacerlo es usar nuestro ID de bloque de anuncios de prueba para anuncios nativos avanzados en Android:
ca-app-pub-3940256099942544/1033173712
Lo hemos configurado especialmente para devolver anuncios de prueba a cada solicitud, y puedes usarlo para programar, probar y depurar tus aplicaciones. Recuerda sustituirlo por el ID de uno de tus bloques de anuncios cuando vayas a publicar la aplicación.
Para obtener más información sobre cómo funcionan los anuncios de prueba del SDK de anuncios para móviles, consulta la guía Anuncios de prueba.
Cargar anuncios
Para cargar un anuncio intersticial, llama al método loadAd()
del objeto InterstitialAd
. Este método solo acepta el objeto AdRequest
como parámetro:
Java
package ... import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.interstitial.InterstitialAd; public class MainActivity extends Activity { private InterstitialAd mInterstitialAd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713"); mInterstitialAd = new InterstitialAd(this); mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); mInterstitialAd.loadAd(new AdRequest.Builder().build()); } }
Kotlin
class MainActivity : Activity() { private lateinit var mInterstitialAd: InterstitialAd override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713") mInterstitialAd = InterstitialAd(this) mInterstitialAd.adUnitId = "ca-app-pub-3940256099942544/1033173712" mInterstitialAd.loadAd(AdRequest.Builder().build()) } }
Mostrar anuncios
Los anuncios intersticiales deben mostrarse durante las pausas naturales de una aplicación; por ejemplo, entre los diferentes niveles de un juego o después de que el usuario haya terminado una acción concreta.
Si quieres mostrar un anuncio intersticial, utiliza el método isLoaded()
para comprobar que ha terminado de cargarse y, después, llama a show()
.
El anuncio intersticial del ejemplo de código anterior podría mostrarse en el objeto OnClickListener
de un botón de esta manera:
Java
mMyButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mInterstitialAd.isLoaded()) { mInterstitialAd.show(); } else { Log.d("TAG", "The interstitial wasn't loaded yet."); } } });
Kotlin
mMyButton.setOnClickListener { if (mInterstitialAd.isLoaded) { mInterstitialAd.show() } else { Log.d("TAG", "The interstitial wasn't loaded yet.") } }
Eventos de anuncio
Para personalizar aún más el comportamiento de tus anuncios, puedes añadir varios eventos a su ciclo de vida: carga, apertura, cierre, etc. Para procesar estos eventos, usa la clase AdListener
.
Para usar la clase AdListener
con un objeto InterstitialAd
, solo tienes que llamar al método setAdListener()
:
Java
mInterstitialAd.setAdListener(new AdListener() { @Override public void onAdLoaded() { // Code to be executed when an ad finishes loading. } @Override public void onAdFailedToLoad(int errorCode) { // Code to be executed when an ad request fails. } @Override public void onAdOpened() { // Code to be executed when the ad is displayed. } @Override public void onAdClicked() { // Code to be executed when the user clicks on an ad. } @Override public void onAdLeftApplication() { // Code to be executed when the user has left the app. } @Override public void onAdClosed() { // Code to be executed when the interstitial ad is closed. } });
Kotlin
mInterstitialAd.adListener = object: AdListener() { override fun onAdLoaded() { // Code to be executed when an ad finishes loading. } override fun onAdFailedToLoad(errorCode: Int) { // Code to be executed when an ad request fails. } override fun onAdOpened() { // Code to be executed when the ad is displayed. } override fun onAdClicked() { // Code to be executed when the user clicks on an ad. } override fun onAdLeftApplication() { // Code to be executed when the user has left the app. } override fun onAdClosed() { // Code to be executed when the interstitial ad is closed. } }
Cada uno de los métodos anulables de AdListener
se corresponde con un evento del ciclo de vida de un anuncio.
Métodos anulables | |
---|---|
onAdLoaded()
|
El método onAdLoaded() se ejecuta cuando el anuncio termina de cargarse. |
onAdFailedToLoad()
|
El método onAdFailedToLoad() incluye un parámetro errorCode , que indica qué tipo de error se ha producido. Los valores posibles son constantes que se especifican en la clase AdRequest
|
onAdOpened()
|
Este método se invoca cuando el anuncio mostrado ocupa toda la pantalla del dispositivo. |
onAdLeftApplication()
|
Este método se invoca cuando el clic de un usuario abre otra aplicación (por ejemplo, Google Play) y la aplicación que ya estaba abierta queda en segundo plano. |
onAdClosed()
|
Este método se invoca cuando el anuncio intersticial se cierra debido a que el usuario toca el icono de cierre o el botón para volver. Si la aplicación había pausado la reproducción de audio o el bucle del juego, este es un buen momento para reanudarlos. |
Usar un AdListener para recargar
El método onAdClosed()
de la clase AdListener
es muy práctico para cargar un nuevo anuncio intersticial después de mostrar el anterior:
Java
... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713"); mInterstitialAd = new InterstitialAd(this); mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); mInterstitialAd.loadAd(new AdRequest.Builder().build()); mInterstitialAd.setAdListener(new AdListener() { @Override public void onAdClosed() { // Load the next interstitial. mInterstitialAd.loadAd(new AdRequest.Builder().build()); } }); } ...
Kotlin
... override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713") mInterstitialAd = InterstitialAd(this) mInterstitialAd.adUnitId = "ca-app-pub-3940256099942544/1033173712" mInterstitialAd.adListener = object : AdListener() { override fun onAdClosed() { mInterstitialAd.loadAd(AdRequest.Builder().build()) } } } ...
Algunas prácticas recomendadas
- Plantéate si los intersticiales son el tipo de anuncio más adecuado para tu aplicación.
- Los anuncios intersticiales funcionan mejor en las aplicaciones con puntos de transición naturales. Por ejemplo, cuando se pueden mostrar al terminar una acción en la aplicación, como compartir una imagen o completar un nivel de un juego. En esos momentos, como el usuario espera que se produzca una interrupción, es fácil presentar un anuncio intersticial sin que su experiencia se vea afectada. Decide en qué puntos del flujo de trabajo de la aplicación se mostrarán anuncios intersticiales y analiza cómo crees que responderán los usuarios.
- Mostrar un anuncio intersticial implica pausar la acción.
- Hay distintos tipos de anuncios intersticiales, como los de texto, imagen y vídeo.
Es importante que, cuando la aplicación muestre un anuncio intersticial, se suspenda el uso de algunos recursos para que el anuncio pueda aprovecharlos. Por ejemplo, cuando realices la llamada para mostrar un anuncio intersticial, pausa todo el audio que se esté reproduciendo en la aplicación. La reproducción se reanuda en el gestor de eventos
onAdClosed()
, que se invocará cuando el usuario haya terminado de interactuar con el anuncio. Además, mientras se muestra el anuncio, es conveniente detener temporalmente cualquier tarea que consuma muchos recursos (por ejemplo, un bucle de juego). De esta forma, el usuario no se encontrará con gráficos lentos o que no respondan ni con vídeos entrecortados. - Define un tiempo de carga adecuado.
- Hacer que el usuario no tenga que esperar a que los anuncios intersticiales se carguen es igual de importante que mostrarlos en el momento adecuado. Para que la aplicación tenga un anuncio intersticial completamente cargado y listo cuando llegue el momento de mostrarlo, cárgalo por adelantado. Para ello, llama a
loadAd()
antes de llamar ashow()
. - No satures al usuario con anuncios.
- Aunque aumentar la frecuencia de los anuncios intersticiales en tu aplicación te parezca una excelente forma de aumentar los ingresos, también puede degradar la experiencia de usuario y provocar que disminuya el porcentaje de clics. Si interrumpes a los usuarios con demasiada frecuencia, no disfrutarán utilizando tu aplicación.
Código fuente
Ejemplos de GitHub
Casos de éxito
Pasos siguientes
- Si todavía no lo has hecho, crea tu propio bloque de anuncios intersticiales en la interfaz de usuario de AdMob.
- Consulta las guías sobre la segmentación de anuncios y los anuncios intersticiales.
- Prueba otros formatos de anuncio: