Interstitial Ads

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

En esta guía se explica cómo puedes integrar anuncios intersticiales en una aplicación Android.

Requisitos

Crear un objeto de anuncio intersticial

Los anuncios intersticiales se solicitan y muestran mediante objetos PublisherInterstitialAd. Para empezar, debes crear una instancia de PublisherInterstitialAd 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.doubleclick.PublisherInterstitialAd;

    public class MainActivity extends Activity {

        private PublisherInterstitialAd mPublisherInterstitialAd;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
                mPublisherInterstitialAd = new PublisherInterstitialAd(this);
            mPublisherInterstitialAd.setAdUnitId("/6499/example/interstitial");
        }
    }

Kotlin

    class MainActivity : Activity() {

        private lateinit var mPublisherInterstitialAd: PublisherInterstitialAd

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
                mPublisherInterstitialAd = PublisherInterstitialAd(this)
            mPublisherInterstitialAd.adUnitId = "/6499/example/interstitial"
        }
    }

Se puede usar un solo objeto PublisherInterstitialAd 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:

/6499/example/interstitial

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 PublisherInterstitialAd. Este método solo acepta el objeto PublisherAdRequest como parámetro:

Java

    package ...

    import com.google.android.gms.ads.doubleclick.PublisherAdRequest;
    import com.google.android.gms.ads.doubleclick.PublisherInterstitialAd;

    public class MainActivity extends Activity {

        private PublisherInterstitialAd mPublisherInterstitialAd;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
                mPublisherInterstitialAd = new PublisherInterstitialAd(this);
            mPublisherInterstitialAd.setAdUnitId("/6499/example/interstitial");
            mPublisherInterstitialAd.loadAd(new PublisherAdRequest.Builder().build());
        }
    }

Kotlin

    class MainActivity : Activity() {

        private lateinit var mPublisherInterstitialAd: PublisherInterstitialAd

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
                mPublisherInterstitialAd = PublisherInterstitialAd(this)
            mPublisherInterstitialAd.adUnitId = "/6499/example/interstitial"
            mPublisherInterstitialAd.loadAd(PublisherAdRequest.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 (mPublisherInterstitialAd.isLoaded()) {
                mPublisherInterstitialAd.show();
            } else {
                Log.d("TAG", "The interstitial wasn't loaded yet.");
            }
        }
    });

Kotlin

    mMyButton.setOnClickListener {
        if (mPublisherInterstitialAd.isLoaded) {
            mPublisherInterstitialAd.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 PublisherInterstitialAd, solo tienes que llamar al método setAdListener():

Java

    mPublisherInterstitialAd.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

    mPublisherInterstitialAd.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 PublisherAdRequest
    :
  • ERROR_CODE_INTERNAL_ERROR: se ha producido un error en los sistemas internos (por ejemplo, el servidor de anuncios ha enviado una respuesta no válida).
  • ERROR_CODE_INVALID_REQUEST: la solicitud de anuncio no era válida (por ejemplo, el ID del bloque de anuncios era incorrecto).
  • ERROR_CODE_NETWORK_ERROR: no se ha podido realizar la solicitud de anuncio debido a problemas con la conexión de red.
  • ERROR_CODE_NO_FILL: la solicitud de anuncio se ha realizado correctamente, pero no se ha mostrado ningún anuncio por falta de inventario publicitario.
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);
            mPublisherInterstitialAd = new PublisherInterstitialAd(this);
        mPublisherInterstitialAd.setAdUnitId("/6499/example/interstitial");
        mPublisherInterstitialAd.loadAd(new PublisherAdRequest.Builder().build());

        mPublisherInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                // Load the next interstitial.
                mPublisherInterstitialAd.loadAd(new PublisherAdRequest.Builder().build());
            }

        });
    }
    ...
    

Kotlin

    ...
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
            mPublisherInterstitialAd = InterstitialAd(this)
        mPublisherInterstitialAd.adUnitId = "/6499/example/interstitial"
        mPublisherInterstitialAd.adListener = object : AdListener() {
            override fun onAdClosed() {
                mPublisherInterstitialAd.loadAd(PublisherAdRequest.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 a show().
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.

Additional resources

Samples on GitHub

Mobile Ads Garage video tutorials

Next steps