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.
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.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(); } }); ...
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
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(); ...
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!"); } }
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.