Añadir anuncios intersticiales a una aplicación de Unity

Audience Network te permite monetizar tus aplicaciones para Android e iOS con anuncios de Facebook. Los anuncios intersticiales son una experiencia publicitaria a pantalla completa que se puede usar en puntos de transición del proceso de una aplicación; por ejemplo, entre actividades o durante la pausa entre niveles de un juego. El contenido pueden ser imágenes, vídeos o secuencias. En esta guía se explica cómo añadir anuncios intersticiales a tu aplicación.

Asegúrate de haber completado las guías Primeros pasos de Audience Network y Primeros pasos de Unity antes de continuar.

Pasos de los anuncios intersticiales

Paso 1: Crear un objeto de anuncio intersticial

Paso 2: Añadir eventos de devolución de llamada

Paso 3: Cargar un anuncio

Paso 4: Mostrar el anuncio

Paso 1: Crear un objeto de anuncio intersticial

El primer paso para mostrar un anuncio intersticial consiste en crear un objeto InterstitialAd en un script de C# adjunto a GameObject.

...
using AudienceNetwork;
...

public class InterstitialAdTest : MonoBehaviour
{
    ...
    private InterstitialAd interstitialAd;
    private bool isLoaded;
    ...

    public void LoadInterstitial()
    {
        this.interstitialAd = new InterstitialAd("YOUR_PLACEMENT_ID");
        this.interstitialAd.Register(this.gameObject);

        // Set delegates to get notified on changes or when the user interacts with the ad.
        this.interstitialAd.InterstitialAdDidLoad = (delegate() {
            Debug.Log("Interstitial ad loaded.");
            this.isLoaded = true;
        });
        interstitialAd.InterstitialAdDidFailWithError = (delegate(string error) {
            Debug.Log("Interstitial ad failed to load with error: " + error);
        });
        interstitialAd.InterstitialAdWillLogImpression = (delegate() {
            Debug.Log("Interstitial ad logged impression.");
        });
        interstitialAd.InterstitialAdDidClick = (delegate() {
            Debug.Log("Interstitial ad clicked.");
        });

        this.interstitialAd.interstitialAdDidClose = (delegate() {
            Debug.Log("Interstitial ad did close.");
            if (this.interstitialAd != null) {
                this.interstitialAd.Dispose();
            }
        });

        // Initiate the request to load the ad.
        this.interstitialAd.LoadAd();
    }
    ...
}

El constructor de un objeto InterstitialAd tiene los parámetros siguientes:

  • placementId: identificador de ubicación de Audience Network de este anuncio intersticial.

Paso 2: Añadir eventos de devolución de llamada

A continuación, puedes implementar algunas devoluciones de llamada para suscribirse en los eventos del ciclo de vida del anuncio. Para escuchar estos eventos, registra un delegado para el evento, según se muestra a continuación en el ejemplo:

...
// Set delegates to get notified on changes or when the user interacts with the ad.
this.interstitialAd.InterstitialAdDidLoad = (delegate() {
    Debug.Log("Interstitial ad loaded.");
    this.isLoaded = true;
});
interstitialAd.InterstitialAdDidFailWithError = (delegate(string error) {
    Debug.Log("Interstitial ad failed to load with error: " + error);
});
interstitialAd.InterstitialAdWillLogImpression = (delegate() {
    Debug.Log("Interstitial ad logged impression.");
});
interstitialAd.InterstitialAdDidClick = (delegate() {
    Debug.Log("Interstitial ad clicked.");
});

this.interstitialAd.interstitialAdDidClose = (delegate() {
    Debug.Log("Interstitial ad did close.");
    if (this.interstitialAd != null) {
        this.interstitialAd.Dispose();
    }
});
...

Devolución de llamada para la actividad de anuncios destruida en Android de Unity

Este contenido solo es pertinente para Android.

Actualmente, los juegos de Unity para Android solo admiten que el elemento Activity principal de Unity tenga launchMode de singleTask. Consulta el documento de Unity sobre el manifiesto de Android y el documento de Android sobre activity.

Dado que usamos Activity para mostrar anuncios Interstitial y Rewarded Video, la actividad de anuncios se podría destruir sin cerrarse correctamente cuando un usuario deja una aplicación en segundo plano y, luego, la vuelve a iniciar mediante el icono, en lugar de usar el conmutador de aplicaciones. Puedes usar las devoluciones de llamada siguientes para comprobar si el usuario cerró el anuncio:

Para los anuncios intersticiales:

this.interstitialAd.interstitialAdDidClose = (delegate() { Debug.Log("Interstitial ad did close."); this.didClose = true; if (this.interstitialAd != null) { this.interstitialAd.Dispose(); } }); #if UNITY_ANDROID /* * Only relevant to Android. * This callback will only be triggered if the Interstitial activity has * been destroyed without being properly closed. This can happen if an * app with launchMode:singleTask (such as a Unity game) goes to * background and is then relaunched by tapping the icon. */ this.interstitialAd.interstitialAdActivityDestroyed = (delegate() { if (!this.didClose) { Debug.Log("Interstitial activity destroyed without being closed first."); Debug.Log("Game should resume."); } }); #endif 

Para los vídeos con premio:

this.rewardedVideoAd.rewardedVideoAdDidClose = (delegate() { Debug.Log("Rewarded video ad did close."); this.didClose = true; if (this.rewardedVideoAd != null) { this.rewardedVideoAd.Dispose(); } }); #if UNITY_ANDROID /* * Only relevant to Android. * This callback will only be triggered if the Rewarded Video activity * has been destroyed without being properly closed. This can happen if * an app with launchMode:singleTask (such as a Unity game) goes to * background and is then relaunched by tapping the icon. */ this.rewardedVideoAd.rewardedVideoAdActivityDestroyed = (delegate() { if (!this.didClose) { Debug.Log("Rewarded video activity destroyed without being closed first."); Debug.Log("Game should resume. User should not get a reward."); } }); #endif 

Paso 3: Cargar un anuncio

Una vez se haya creado una instancia de InterstitialAd, el siguiente paso consiste en cargar un anuncio. Para ello, usa el método loadAd() de la clase InterstitialAd.

En el ejemplo que se muestra anteriormente, la carga del anuncio se realiza de la siguiente manera:

...
this.interstitialAd.LoadAd();
...

Paso 4: Mostrar el anuncio

Finalmente, una vez que se carga el anuncio intersticial, puedes llamar al método Show para representar el anuncio intersticial en la pantalla. Por ejemplo, puedes tener una función para ShowInterstitial y llamarla cuando se deba mostrar el anuncio intersticial:

// Show button
public void ShowInterstitial()
{
    if (this.isLoaded) {
        this.interstitialAd.Show();
        this.isLoaded = false;

    } else {
        Debug.Log("Interstitial Ad not loaded!");
    }
}

Siguientes pasos

Sigue nuestras guías para integrar distintos formatos de anuncio en tu aplicación de Unity:

Cuando estés listo para publicar tu aplicación y monetizarla, envíala a revisión tras asegurarte de que cumpla las Políticas de Audience Network y las Normas comunitarias de Facebook.