Interstitial Ads

Los anuncios intersticiales son anuncios a pantalla completa que cubren la interfaz de la aplicación en la que se alojan. Se suelen mostrar en las transiciones naturales de una aplicación, como entre distintas actividades o, en los juegos, al pasar de un nivel a otro. Cuando una aplicación muestra un anuncio intersticial, el usuario tiene la opción de tocar el anuncio e ir a la página de destino o cerrarlo y volver a la aplicación.

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

Requisito previo

Crear un objeto de anuncio intersticial

Los anuncios intersticiales se solicitan y se muestran mediante los objetos PublisherInterstitialAd. El primer paso es crear una instancia de PublisherInterstitialAd y configurar el ID de su bloque de anuncios. Esto se lleva a cabo mediante el método onCreate() de una actividad:

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 pruebes tus aplicaciones, utiliza siempre anuncios de prueba en lugar de anuncios de producción 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. Solo tienes que sustituirlo por el ID de uno de tus bloques de anuncios antes de publicar la aplicación.

Si quieres 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, que 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 que se producen en el flujo de una aplicación. Por ejemplo, entre los niveles de un juego o después de que el usuario complete una tarea. Si quieres mostrar un anuncio intersticial, usa 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 detectarlos, usa la clase AdListener.

Para usar un 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 se termina de cargar.
onAdFailedToLoad() El método onAdFailedToLoad() incluye un parámetro errorCode que indica qué tipo de fallo se ha producido. Los valores posibles se definen como constantes en la clase PublisherAdRequest:
  • ERROR_CODE_INTERNAL_ERROR: se ha producido un problema en nuestros 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, porque 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 devuelto 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 actual 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 cerrar o el botón para volver atrás. 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 un lugar muy práctico para cargar un nuevo 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 transiciones naturales. Por ejemplo, al finalizar una tarea 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 en la acción, es fácil presentar un anuncio intersticial sin interrumpir su experiencia. 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.
Existen 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 todas las salidas de audio que produzca la aplicación. La reproducción de audio 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 de la experiencia de utilizar tu aplicación.

Additional resources

Samples on GitHub

Mobile Ads Garage video tutorials

Next steps