En esta guía, se muestra cómo usar el complemento de anuncios nativos para implementar anuncios nativos de AdMob anuncios en una app para Unity, así como algunos aspectos importantes que debes tener en cuenta durante el proceso.
Los anuncios nativos coinciden con la forma y la función de la experiencia del usuario en los que se ubican. También coinciden con el diseño visual de la aplicación en la que se encuentran. El formato de anuncios nativos de AdMob permite a los publicadores renderizar anuncios sin inconvenientes con el contenido. Puedes usar esta tecnología para implementar renderizaciones altamente personalizadas que aprovechen al máximo el código nativo en las apps de Unity.
Los anuncios nativos se muestran con los mismos tipos de GameObjects
con los que
que ya están creando tus apps y a las que se les puede dar formato para que coincidan con el diseño visual de
la experiencia del usuario en la que viven. Cuando se carga un anuncio nativo, tu app
reciba un objeto nativo que contenga sus recursos y la app de Unity (en lugar de
SDK) las muestra.
Requisitos previos
- La versión 7.0.0 o una posterior del complemento de Google Mobile Ads para Unity
- Completa la Guía de introducción.
- Descargar y a instalar el complemento de anuncios nativos.
Carga formatos de anuncios nativos
Los anuncios nativos se cargan a través de la clase AdLoader
, que tiene su propia
La clase AdLoader.Builder
para personalizarla durante la creación. El ForNativeAd()
configura AdLoader para controlar anuncios nativos.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
Cómo registrarse para los eventos de anuncios de AdLoader
Si deseas recibir una notificación cuando se cargue correctamente o no un anuncio nativo, agrega
delega a la clase AdLoader
para los eventos que se indican a continuación.
OnNativeAdLoaded
Se invoca cuando un anuncio nativo se carga correctamente. Es necesario tener un delegado de este evento para acceder al anuncio que se cargó.
OnAdFailedToLoad
Se invoca cuando no se puede cargar un anuncio nativo.
Carga el anuncio
Cuando termines de compilar un AdLoader
, llama a su método LoadAd()
para
solicitar un anuncio:
adLoader.LoadAd(new AdRequest.Builder().Build());
Cómo combinar la solicitud de anuncio
En el siguiente fragmento de código, se muestra cómo compilar un AdLoader
que se
Configurada para solicitar anuncios nativos, configura delegados para anuncios exitosos y fallidos
se carga y realiza una solicitud de anuncio.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
adLoader.LoadAd(new AdRequest.Builder().Build());
}
Controla las cargas de anuncios con errores
El evento OnAdFailedToLoad
es del tipo EventHandle<AdFailedToLoadEventArgs>
.
A continuación, se muestra el motivo del error en la carga de anuncios de este evento.
private void RequestNativeAd() {
...
adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
Debug.Log("Native ad failed to load: " + args.Message);
}
Muestra un anuncio nativo
Cuando se carga un anuncio nativo, se invoca el evento del anuncio para el formato del anuncio correspondiente. Luego, tu app es responsable de mostrar el anuncio, aunque no necesariamente deben hacerlo de inmediato.
Controla la carga de anuncios
El evento OnNativeAdLoaded
es del tipo EventHandler<NativeAdEventArgs>
. El
anuncio, encapsulado en un objeto NativeAd
, se puede recuperar desde
NativeAdEventArgs
como se muestra:
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
Recupera elementos de anuncios nativos
Una vez que se cargan los anuncios, puedes acceder a sus recursos como se muestra a continuación. Gráfico
los recursos se muestran como objetos Texture2D
y los recursos de texto se muestran como
string
.
private bool nativeAdLoaded;
private NativeAd nativeAd;
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for the 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 HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}
Ten en cuenta que solo se debe acceder a los recursos del anuncio en la conversación principal, por ejemplo,
a partir del método Update()
de una secuencia de comandos de Unity. Además, ten en cuenta que los siguientes recursos
no siempre se garantiza que estén presentes y se deben verificar
se muestra:
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
Recurso de AdChoices
Es un requisito mostrar el recurso del anuncio de AdChoices como parte del anuncio nativo. Además, es importante que el recurso del anuncio de AdChoices se vea fácilmente, así que los colores de fondo y las imágenes de manera adecuada.
Registra GameObjects para los recursos del anuncio
Debes registrar el GameObject
para que el recurso del anuncio se muestre en tu
App para Unity. Si el registro es exitoso, el método que se usó para registrar el
GameObject
muestra un bool
. En el caso de List<GameObject>
, el método muestra un
int
: Indica que el recuento de GameObject
se registró correctamente.
Si no se realiza correctamente el registro de un recurso del anuncio, las impresiones y los clics en el no se reconocerá el anuncio nativo correspondiente.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
El GameObject
registrado para un recurso del anuncio debe tener un colisionador convexo
que es representativo del tamaño y la forma de GameObject
. Si
A GameObject
de objetos registrados en los recursos del anuncio les faltan Collider
componentes
o tienen una configuración incorrecta, los anuncios nativos no funcionarán correctamente.
En el siguiente fragmento de código, se agrega un BoxCollider
a GameObject
que usa un
TextMesh
para mostrar el recurso de título de un anuncio nativo. Una vez que
BoxCollider
se conecta a GameObject
; se ajustará la escala automáticamente a
ajustar el 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 siguiente código, se muestra cómo recuperar el elemento de ícono de un objeto de escucha correctamente
anuncio nativo cargado, muestra el recurso de anuncio de ícono estableciendo la textura de una Quad
,
y registra el GameObject
que se usará para mostrar el recurso. Este proceso de
recuperar el recurso del anuncio y registrarlo en la clase de anuncios nativos
repetidos para cada uno de los recursos que muestra la app.
private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = 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 HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}