Formatos de anuncios nativos personalizados

Los editores de Ad Manager pueden definir listas personalizadas de recursos para crear sus propios formatos de anuncios nativos. Estos formatos de anuncios nativos personalizados se pueden usar con anuncios reservados. También permiten a los editores transferir datos arbitrarios de cadenas e imágenes a sus aplicaciones. Estos datos se representan con un objeto CustomNativeAd.

Cargar anuncios nativos personalizados

Los anuncios nativos personalizados se cargan mediante objetos AdLoader. El método ForCustomNativeAd() configura AdLoader para gestionar anuncios nativos personalizados. Este método tiene dos parámetros distintos:

  • El formatId del anuncio personalizado que AdLoader debe solicitar. Cada formato de anuncio nativo personalizado tiene asociado un valor de ID. Este parámetro indica el formato que tu aplicación quiere que solicite AdLoader.
  • Un Action<CustomNativeAd, string> opcional que se invoca cuando el usuario hace clic en el anuncio.

Los anuncios nativos personalizados se cargan mediante la clase AdLoader, que tiene su propia clase AdLoader.Builder para personalizarla durante la creación. El método ForCustomNativeAd() configura AdLoader para gestionar anuncios nativos.

void LoadCustomNativeAd()
{
    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 un formato de anuncio nativo personalizado, es posible invocar ForCustomNativeAd() varias veces con diferentes IDs de formato para preparar el cargador de anuncios para más de un formato de anuncio nativo personalizado.

Eventos de anuncios nativos personalizados

La clase AdLoader proporciona eventos de anuncios del tipo EventHandler para avisarte del ciclo de vida de un anuncio nativo personalizado. En el siguiente ejemplo se muestra cómo registrarse en eventos de anuncios nativos personalizados en un cargador de anuncios:

private AdLoader adLoader;
adLoader.OnCustomNativeAdLoaded += HandleCustomNativeAdLoaded;
adLoader.OnAdFailedToLoad += HandleCustomNativeAdFailedToLoad;

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

void HandleCustomNativeAdLoaded(object sender, CustomNativeAdEventArgs args)
{
    this.customNativeAd = args.nativeAd;
}

El método HandleCustomNativeAdFailedToLoad() contiene un parámetro AdFailedToLoadEventArgs. Se puede acceder al mensaje de error llamando al método GetMessage en el campo LoadAdError, como se muestra a continuación:

void HandleCustomNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    string message = args.LoadAdError.GetMessage();
    Debug.Log("Ad Loader fail event received with message: " + message);
}

Mostrar formatos de anuncios nativos personalizados

Los 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 CustomNativeAd, que proporciona los métodos GetTexture2D() y GetText(), que utilizan el ID de variable de un campo de formato como parámetro.

A continuación se incluye un ejemplo de implementación que accede a los recursos desde un anuncio nativo personalizado:

private boolean adLoaded;
private Texture2d mainImageTexture;
private string headline;
private CustomNativeAd customNativeAd;
...

void Update()
{
    if(adLoaded)
    {
        mainImageTexture = customNativeAd.GetTexture2D("MainImage");
        headline = customNativeAd.GetText("Headline");
        adLoaded = false;
    }
}
...
void HandleCustomNativeAdLoaded(object sender, CustomNativeAdEventArgs args)
{
    customNativeAd = args.nativeAd;
    ...
}

Gestionar las impresiones y los clics de los anuncios nativos personalizados

Con los anuncios nativos personalizados, la aplicación debe registrar las impresiones e informar al SDK de los eventos de clics.

Registrar impresiones

Para registrar las impresiones de un anuncio personalizado, llama al método RecordImpression() del objeto CustomNativeAd correspondiente:

customNativeAd.RecordImpression();

Registrar clics

Para informar al SDK de que se ha hecho clic en un recurso, debes llamar al método PerformClick() del objeto CustomNativeAd correspondiente y transferir el nombre del recurso en cuestión. Por ejemplo, si en tu formato personalizado tienes un recurso llamado "MainImage" y quieres informar de que se ha hecho clic en la textura que corresponde a ese recurso, el código será similar a este:

customNativeAd.PerformClick("MainImage");

Responder a acciones de clic personalizadas

Al informar de un clic en un anuncio personalizado, el SDK puede responder de varias maneras y en el siguiente orden:

  1. Localiza una resolución de contenido para cada una de las URLs de enlace profundo del anuncio y abre la primera que se resuelva.

  2. Abre un navegador y accede a la URL de destino tradicional del anuncio.

Si quieres ocuparte de las acciones de clic de tus formatos de anuncios nativos personalizados, en lugar de dirigir a los usuarios a un enlace profundo o a un navegador web, proporciona un Action<CustomNativeAd, string> opcional en el método AdLoader.Builder.ForCustomNativeAd(). Al configurar esta acción de clic personalizada, se anula el comportamiento de clic del SDK. En este ejemplo se utiliza una acción de clic personalizada para registrar un clic correspondiente a un recurso determinado:

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

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