Formatos de anuncios nativos personalizados

Los editores de Google Ad Manager pueden definir listas personalizadas de recursos para crear sus propios formatos de anuncios nativos. Estos formatos de anuncios nativos personalizados se pueden utilizar con los anuncios reservados. Permiten a los editores transferir datos arbitrarios de cadenas e imágenes a sus aplicaciones, representados mediante objetos CustomNativeTemplateAd.

Cargar formatos de anuncios nativos personalizados

Los formatos de anuncios nativos personalizados se cargan mediante objetos AdLoader. El método forCustomTemplateAd() configura el AdLoader para que gestione formatos de anuncios nativos personalizados. Cada uno de ellos tiene asociado un valor de ID de plantilla. Debes especificar el del anuncio nativo personalizado que AdLoader tiene que solicitar para tu aplicación. Busca los ID de plantilla en la interfaz de Ad Manager correspondientes al ID de plantilla del formato de anuncio nativo que quieres solicitar.

void LoadCustomNativeTemplateAd()
{
    AdLoader adLoader = new AdLoader.Builder("/6499/example/native")
        .forCustomNativeAd("10063170")
        .Build();
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

Puesto que se puede configurar un solo bloque de anuncios para que sirva más de una plantilla creativa, es posible invocar forCustomTemplateAd() varias veces con diferentes ID de plantilla para preparar el Adloader para más de un posible formato de anuncio nativo personalizado. En el siguiente fragmento de código se muestra cómo preparar un AdLoader para varias plantillas de formatos de anuncios nativos personalizados.

void LoadCustomNativeTemplateAd()
{
    AdLoader adLoader = new AdLoader.Builder("/6499/example/native")
        .forCustomNativeAd("10063170")
        .forCustomNativeAd("10063171")
        .forCustomNativeAd("10063172")
        .Build();
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

Eventos personalizados para formatos de anuncios nativos

La clase AdLoader proporciona eventos de anuncios del tipo EventHandler, que sirven para notificarte del ciclo de vida de un formato de anuncio nativo personalizado. En el siguiente ejemplo se muestra cómo registrarse en eventos de anuncios con formato nativo personalizado:

adLoader.onCustomNativeTemplateAdLoaded += HandleCustomNativeAdLoaded;
adLoader.OnAdFailedToLoad += HandleCustomNativeAdFailedToLoad;

El método HandleCustomNativeAdLoaded() contiene un parámetro CustomNativeEventArgs. Como se muestra a continuación, a través de este parámetro de evento se puede acceder al formato de anuncio nativo personalizado que se ha cargado:

private boolean adLoaded;
private CustomNativeTemplateAd customNativeTemplateAd;
...
void HandleCustomNativeAdLoaded(object sender, CustomNativeEventArgs args)
{
    customNativeTemplateAd = args.nativeAd;
    adLoaded = true;
}

Mostrar formatos de anuncios nativos personalizados

Los formatos de anuncios nativos personalizados admiten cualquier número de recursos de imagen y de texto definidos por los usuarios. Se puede acceder a estos recursos a través de la clase CustomNativeTemplateAd, que proporciona los métodos GetTexture2D() y GetText() que, a su vez, adoptan como parámetro el ID de variable de un campo de plantilla.

En el siguiente ejemplo de implementación se extraen recursos de un CustomNativeTemplateAd:

public const int NATIVE_AD_TEMPLATE_1 = 10063170;
public const int NATIVE_AD_TEMPLATE_2 = 10063171;

private boolean adLoaded;
private Texture2d mainImageTexture;
private string headline;
private CustomNativeTemplateAd customNativeTemplateAd;
...

void Update()
{
    if(adLoaded)
    {
        mainImageTexture = customNativeTemplateAd.GetTexture2D("MainImage");
        headline = customNativeTemplateAd.GetText("Headline");

        string templateId = customNativeTemplateAd.GetCustomTemplateId();
        if (templateId == NATIVE_AD_TEMPLATE_1)
        {
            ...
        }
        else if (templateId == NATIVE_AD_TEMPLATE_2)
        {
            ...
        }
        ...
        adLoaded = false;
    }
}
...

void HandleCustomNativeAdLoaded(object sender, CustomNativeEventArgs args)
{
    customNativeTemplateAd = args.nativeAd;
    adLoaded = true;
    ...
}

Gestionar clics e impresiones de formatos de anuncios nativos personalizados

En los formatos de anuncios nativos personalizados, la aplicación es responsable de registrar las impresiones y de informar al SDK de los eventos de clics.

Registrar impresiones

Para registrar las impresiones de formatos de anuncios nativos, llama al método RecordImpression() en el elemento CustomNativeTemplateAd correspondiente:

customNativeTemplateAd.RecordImpression();

Registrar clics

Para informar al SDK de que se ha hecho clic en un recurso, llama al método PerformClick() en el CustomNativeTemplateAd correspondiente y transfiere el nombre del recurso en el que se ha hecho clic. Por ejemplo, si en el formato de anuncio nativo personalizado tienes un recurso llamado "MainImage" y quieres informar de que se ha hecho clic en la textura que corresponde al recurso, el código será similar a este:

customNativeTemplateAd.PerformClick("MainImage");

Al informar de un clic en un anuncio de plantilla personalizada, el SDK puede responder de dos maneras distintas y en el siguiente orden:

  1. Localizar una resolución de contenido para cada una de las URL de enlace profundo del anuncio y abrir la primera que se resuelva.
  2. Abrir un navegador y acceder a la URL de destino tradicional del anuncio.

Acciones de clic personalizadas

Es posible que prefieras ocuparte de las acciones de clic de tus formatos de anuncio nativos personalizados, en vez de dirigir a los usuarios a un enlace profundo o a un navegador web. Para hacerlo, tienes que proporcionar una Action<CustomNativeTemplateAd, string> opcional en el método AdLoader.Builder.forCustomTemplateAd(). Al configurar esta acción de clic personalizada, se anula el comportamiento de clic del SDK anteriormente descrito. En este ejemplo se utiliza una acción de clic personalizada para registrar un clic correspondiente a un recurso determinado:

private void LoadCustomNativeTemplateAd()
{
    AdLoader adLoader = new AdLoader.Builder("/6499/example/native")
        .forCustomNativeAd("10063170", HandleCustomNativeAdClicked)
        .Build();
    adLoader.onCustomNativeTemplateAdLoaded += HandleCustomNativeAdLoaded;
    adLoader.OnAdFailedToLoad += HandleCustomNativeAdFailedToLoad;
    adLoader.LoadAd(createAdRequest());
}

private void HandleCustomNativeAdClicked(CustomNativeTemplateAd customNativeTemplateAd, string assetName)
{
    Debug.Log("Native ad asset with name " + assetName + " was clicked.");
}