En esta guía aprenderás a usar el complemento para Unity de anuncios de Google para móviles con el fin de implementar anuncios nativos avanzados de AdMob en aplicaciones Unity. También se explican otros aspectos importantes que debes tener en cuenta.
Los anuncios nativos tienen la misma forma y función que la experiencia de usuario en la que se incluyen. También tienen el mismo diseño visual que la aplicación en la que se muestran. El formato de los anuncios nativos avanzados de AdMob permite a los editores renderizar anuncios que se adapten perfectamente al contenido. Puedes utilizar esta tecnología para implementar renderizados altamente personalizados que aprovechan al máximo el código nativo en las aplicaciones Unity.
Los anuncios nativos avanzados se muestran con los mismos tipos de GameObjects
con los que creas tus aplicaciones, y puedes darles el formato que quieras para que se adapten al diseño visual de la experiencia de usuario de la que forman parte. Cuando se carga un anuncio nativo, la aplicación recibe un objeto nativo que contiene sus recursos, y la aplicación Unity (en vez del SDK) se encarga de mostrarlos.
Hay dos tipos de anuncios nativos avanzados: de descarga de aplicaciones y de contenido.
Ambos están representados por un objeto UnifiedNativeAd
, que contiene los recursos del anuncio nativo. Es posible que algunos recursos no estén presentes, así que conviene comprobar su disponibilidad antes de mostrarlos.
Lee algunos casos de éxito de nuestros clientes: caso de éxito 1 y caso de éxito 2.
Requisitos previos
- Si estás migrando desde la versión pública del complemento de anuncios de Google para móviles de GitHub, primero elimina todos los archivos de anuncios de Google para móviles.
- Descarga la versión de anuncios nativos del complemento para Unity de los anuncios de Google para móviles que sea compatible con los anuncios nativos avanzados.
- Sigue las instrucciones de la guía Primeros pasos sobre cómo importar el complemento de Unity de anuncios para móviles e incluir el SDK de anuncios para móviles.
Cargar formatos de anuncios nativos
Los anuncios nativos avanzados se cargan mediante la clase AdLoader
, que tiene su propia clase AdLoader.Builder
para personalizarla durante la creación. El método ForUnifiedNativeAd()
configura el elemento AdLoader
para gestionar
anuncios nativos unificados.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForUnifiedNativeAd()
.Build();
}
Registrarse en los eventos de anuncios de AdLoader
Para recibir una notificación cada vez que un anuncio nativo avanzado se cargue correctamente o no se cargue, añade delegados a la clase AdLoader
para los eventos que se enumeran más abajo.
OnUnifiedNativeAdLoaded
- Se invoca cuando un anuncio nativo unificado se carga correctamente. Para que este evento acceda al anuncio que ha cargado, necesita un delegado.
OnAdFailedToLoad
- Se invoca cuando un anuncio nativo no se carga.
Cargar anuncios
Cuando termines de crear un objeto AdLoader
, llama a su método LoadAd()
para solicitar un anuncio:
adLoader.LoadAd(new AdRequest.Builder().Build());
Crear la solicitud de anuncio
En el siguiente fragmento de código se muestra cómo crear un AdLoader
configurado para solicitar
anuncios nativos unificados
, se asignan delegados para las cargas de anuncios completadas y no completadas, y se hace una solicitud de anuncio.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForUnifiedNativeAd()
.Build();
adLoader.OnUnifiedNativeAdLoaded += this.HandleUnifiedNativeAdLoaded;
adLoader.LoadAd(new AdRequest.Builder().Build());
}
Gestionar errores de carga de anuncios
El evento OnAdFailedToLoad
es del tipo EventHandler<AdFailedToLoadEventArgs>
.
A continuación encontrarás un análisis del motivo por el que se ha producido un error de carga de anuncios en este evento.
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
MonoBehaviour.print("Native ad failed to load: " + args.Message);
}
Mostrar un anuncio
Cuando se carga un anuncio nativo avanzado, se invoca el evento de anuncio para el formato de anuncio correspondiente. Tu aplicación se encargará de mostrar el anuncio, aunque no siempre lo haga de inmediato.
Gestionar la carga de anuncios
El evento OnUnifiedNativeAdLoaded
es del tipo EventHandler<UnifiedNativeAdEventArgs>
. El anuncio, encapsulado en un objeto UnifiedNativeAd
, se puede obtener mediante UnifiedNativeAdEventArgs
de la siguiente forma:
private UnifiedNativeAd nativeAd;
...
private void HandleUnifiedNativeAdLoaded(object sender, UnifiedNativeAdEventArgs args) {
MonoBehaviour.print("Unified Native ad loaded.");
this.nativeAd = args.nativeAd;
}
Obtener recursos de anuncios nativos
Una vez cargados los anuncios, se puede acceder a sus recursos como se indica más abajo. Los recursos gráficos se devuelven como objetos Texture2D
, y los de texto, como objetos string
.
private bool unifiedNativeAdLoaded;
private UnifiedNativeAd nativeAd;
...
void Update() {
...
if (this.unifiedNativeAdLoaded) {
this.unifiedNativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
// Get string for headline asset of native ad.
string headline = this.nativeAd.GetHeadlineText();
}
}
...
private void HandleUnifiedNativeAdLoaded(object sender, UnifiedNativeAdEventArgs args) {
MonoBehaviour.print("Unified native ad loaded.");
this.nativeAd = args.nativeAd;
this.unifiedNativeAdLoaded = true;
}
Solo se debe acceder a los recursos de anuncios a través del hilo principal, por ejemplo, mediante el método Update()
de una secuencia de comandos de Unity. Además, no siempre se asegura la presencia de los siguientes recursos, por lo que antes de mostrarlos, debes comprobar si están disponibles:
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
Recurso de Gestión de anuncios
Es imprescindible mostrar el recurso publicitario de Gestión de anuncios como parte del anuncio nativo avanzado. También es importante que se vea fácilmente, por lo que te recomendamos que elijas los colores e imágenes de fondo más adecuados.
Registrar GameObjects para un recurso de anuncio
Por cada recurso de anuncio que vaya a aparecer, hay que registrar el GameObject
que se usará para mostrar el recurso dentro de la aplicación Unity. Los métodos para registrar un GameObject
correspondiente a un recurso de anuncio devolverán un bool
para indicar si el registro se ha realizado correctamente.
En caso de que no se haya realizado correctamente, no se reconocerán las impresiones ni los clics realizados en el anuncio nativo correspondiente.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
El GameObject
que se ha registrado para un recurso de anuncio debe tener un componente Collider
convexo que se corresponda con el tamaño y la forma del elemento GameObject
. Si faltan componentes Collider
en los objetos GameObject
que se han registrado para los recursos de anuncio o si alguno de los componentes no se ha configurado bien, los anuncios nativos avanzados no funcionarán correctamente.
En el fragmento de código que aparece más abajo, se añade un BoxCollider
al GameObject
que utiliza TextMesh
para mostrar el recurso de título de
un anuncio nativo
. Cuando el BoxCollider
se vincula al GameObject
, se escala automáticamente para adaptarse al texto del componente TextMesh
.
// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;
// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;
// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();
Demostración
En el código que aparece más abajo puedes ver cómo obtener el recurso de icono de un anuncio
nativo
que se ha cargado correctamente, definir la textura de un Quad
para mostrar el icono y registrar el GameObject
que se usará para mostrar el recurso.
Debes repetir este proceso para obtener cada uno de los recursos de anuncio que muestra la aplicación y registrarlos con la clase de anuncio nativo correspondiente.
private GameObject icon;
private bool unifiedNativeAdLoaded;
private UnifiedNativeAd nativeAd;
...
void Update() {
...
if (this.unifiedNativeAdLoaded) {
this.unifiedNativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
icon.transform.position = new Vector3(1, 1, 1);
icon.transform.localScale = new Vector3(1, 1, 1);
icon.GetComponent<Renderer>().material.mainTexture = iconTexture;
// Register GameObject that will display icon asset of native ad.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
}
}
...
private void HandleUnifiedNativeAdLoaded(object sender, UnifiedNativeAdEventArgs args) {
MonoBehaviour.print("Unified native ad loaded.");
this.nativeAd = args.nativeAd;
this.unifiedNativeAdLoaded = true;
}