Interstitial (legacy API)

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.

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

Requisito previo

Crear objetos de anuncio intersticiales

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.

Comprobar siempre las aplicaciones con anuncios de prueba

Cuando crees y testes 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 cargar anuncios de prueba es usar nuestro ID de bloque de anuncios de prueba para intersticiales de 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 propias 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, consulta cómo funcionan los anuncios de prueba del SDK de anuncios para móviles.

Cargar un anuncio

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 el anuncio

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 complete una tarea. Si quieres mostrar un anuncio intersticial, utiliza el método isLoaded() para verificar 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 anuncios

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(LoadAdError adError) {
        // 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(adError: LoadAdError) {
        // 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() es el único que incluye un parámetro. El parámetro de tipo LoadAdError describe qué error se ha producido. Si quieres obtener más información, consulta la documentación sobre cómo depurar errores de carga de anuncios.
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 botón de cerrar. Si la aplicación detuvo la salida de audio o el bucle del juego, este es un buen lugar para reanudarla.

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, de imagen y de 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 (como 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.
Evitar que el usuario 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.