Anuncios nativos avanzados

En esta guía aprenderás a usar el complemento para Unity de anuncios de Google para móviles para implementar anuncios nativos avanzados de AdMob en una aplicación de Unity. También se explican algunos 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 de 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 responsable de mostrarlos es la aplicación de Unity, no el SDK.

Hay dos tipos de anuncios nativos avanzados: de descarga de aplicaciones y de contenido. Los anuncios de descarga de aplicaciones están representados por NativeAppInstallAd, y los de contenido, por NativeContentAd. Ambos objetos contienen los recursos del anuncio nativo.

Requisitos previos

Cargar formatos de anuncios nativos

Los anuncios nativos avanzados se cargan mediante la clase AdLoader que, a su vez, tiene su propia clase AdLoader.Builder para personalizarla durante su creación. El método ForNativeAppInstallAd() configura el AdLoader para gestionar , los anuncios de descarga de aplicaciones y, por su parte, ForNativeContentAd() configura el AdLoader para gestionar los anuncios de contenido.

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAppInstallAd()
        .ForNativeContentAd()
        .Build();
}

Registrarse en los eventos publicitarios de AdLoader

Para recibir una notificación cuando un anuncio avanzado nativo se cargue o no se cargue correctamente, añade delegados a la clase de AdLoader para los eventos que se enumeran a continuación.

OnNativeAppInstallAdLoaded
Se invoca cuando un anuncio de descarga de aplicación se carga correctamente. Para que este evento acceda al anuncio que ha cargado, necesita un delegado.
OnNativeContentAdLoaded
Se invoca cuando un anuncio de contenido nativo 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 correctamente.

Cargar un anuncio

Cuando termines de crear un 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 puedes ver cómo se crea un AdLoader configurado para solicitar , anuncios de descarga de aplicaciones y de contenido, y cómo este asigna delegados para las cargas de anuncios que se han realizado correctamente o no, y solicita un anuncio.

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAppInstallAd()
        .ForNativeContentAd()
        .Build();
    adLoader.OnNativeAppInstallAdLoaded += this.HandleNativeAppInstallAdLoaded;
    adLoader.OnNativeContentAdLoaded += this.HandleNativeContentAdLoaded;
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

Gestionar errores de carga de anuncios

El evento OnAdFailedToLoad es del tipo EventHandler<AdFailedToLoadEventArgs>. Aquí tienes un análisis del motivo de un error de carga de los anuncios de 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 un anuncio de descarga de aplicación

El evento OnNativeAppInstallAdLoaded es del tipo EventHandler<NativeAppInstallAdEventArgs>. El anuncio de descarga de aplicaciones, encapsulado en un objeto NativeAppInstallAd, se puede obtener mediante NativeAppInstallAdEventArgs de la siguiente forma:

private NativeAppInstallAd appInstallAd;
...
private void HandleNativeAppInstallAdLoaded(object sender, NativeAppInstallAdEventArgs args) {
    MonoBehaviour.print("App install ad loaded.");
    this.appInstallAd = args.nativeAd;
}

Gestionar la carga de un anuncio de contenido

El evento OnNativeContentAdLoaded es del tipo EventHandler<NativeContentAdEventArgs>. El anuncio de contenido, encapsulado en un objeto NativeContentAd, se puede obtener mediante NativeAppInstallAdEventArgs de la siguiente forma:

private void HandleNativeContentAdLoaded(object sender, NativeContentAdEventArgs args) {
    MonoBehaviour.print("Content ad loaded.");
    this.contentAd = args.nativeAd;
}

Obtener recursos de anuncios nativos

Una vez cargados los anuncios, se puede acceder a sus recursos como se muestra a continuación. Los recursos gráficos se devuelven como objetos Texture2D, y los activos de texto, como objetos string.

private bool appInstallAdLoaded;
private NativeAppInstallAd appInstallAd;
...
void Update() {
    ...

    if (this.appInstallAdLoaded) {
        this.appInstallAdLoaded = false;
        // Get Texture2D for icon asset of app install ad.
        Texture2D iconTexture = this.appInstallAd.GetIconTexture();

        // Get string for headline asset of app install ad.
        string headline = this.appInstallAd.GetHeadlineText();
    }
}
...

private void HandleNativeAppInstallAdLoaded(object sender, NativeAppInstallAdEventArgs args) {
    MonoBehaviour.print("App install ad loaded.");
    this.appInstallAd = args.nativeAd;
    this.appInstallAdLoaded = true;
}

Es importante señalar que solo se puede acceder a los recursos de anuncios desde el método Update() de una secuencia de comandos de Unity.

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 en un recurso de anuncio

En cada recurso de anuncio que se vaya a mostrar, hay que registrar el GameObject que se usará para mostrar el recurso dentro de la aplicación de 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. Si el registro de un recurso de anuncio no se realiza correctamente, no se reconocerán las impresiones ni los clics realizados en el anuncio nativo correspondiente.

if (!this.appInstallAd.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 GameObject. Si a los objetos GameObject que se hayan registrado para los recursos de anuncio les faltan componentes de Collider o contienen alguno con la configuración incorrecta, los anuncios nativos avanzados no funcionarán correctamente.

En el siguiente fragmento de código, se añade a BoxCollider un GameObject, que utiliza un TextMesh para mostrar el recurso de título de un anuncio de descarga de aplicaciones. Cuando BoxCollider se adjunta a GameObject, se escalará 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.appInstallAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;

// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();

Demostración

En el siguiente fragmento de código puedes ver cómo obtener el recurso de icono de un anuncio de descarga de aplicaciones, asignar la textura de un Quad para mostrar el icono y registrar el GameObject que se usará para mostrar el recurso. Debes obtener todos los recursos de anuncio que muestra la aplicación y registrarlos con la clase de anuncios nativos correspondiente.

private GameObject icon;
private NativeAppInstallAd appInstallAd;
private bool appInstallAdLoaded;
...
void Update() {
    ...

    if (this.appInstallAdLoaded) {
        this.appInstallAdLoaded = false;
        // Get Texture2D for icon asset of app install ad.
        Texture2D iconTexture = this.appInstallAd.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 app install ad.
        if (!this.appInstallAd.RegisterIconImageGameObject(icon))
        {
            // Handle failure to register ad asset.
        }
    }
}
...

private void HandleNativeAppInstallAdLoaded(object sender, NativeAppInstallAdEventArgs args) {
    MonoBehaviour.print("App install ad loaded.");
    this.appInstallAd = args.nativeAd;
    this.appInstallAdLoaded = true;
}

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.