Пользовательские форматы нативной рекламы

В Google Ad Manager издатели могут создавать собственные форматы нативной рекламы, определяя пользовательские списки ресурсов. Эти пользовательские форматы нативной рекламы можно использовать с зарезервированными объявлениями. Пользовательские форматы нативной рекламы позволяют издателям передавать произвольные данные изображений и строк в свои приложения. Эти данные представлены объектом CustomNativeTemplateAd .

Загрузка пользовательских форматов нативной рекламы

Пользовательские форматы нативной рекламы загружаются с помощью объектов AdLoader . Метод forCustomTemplateAd() настраивает AdLoader для обработки пользовательских форматов нативной рекламы. Каждому пользовательскому формату нативной рекламы присвоен идентификатор шаблона. Необходимо указать идентификатор шаблона пользовательского формата нативной рекламы, который ваше приложение хочет запросить у AdLoader . Найдите идентификатор шаблона нужного вам формата нативной рекламы в пользовательском интерфейсе Ad Manager.

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

Поскольку один рекламный блок может быть настроен на показ нескольких креативных шаблонов, forCustomTemplateAd() можно вызывать несколько раз с разными идентификаторами шаблонов, чтобы подготовить Adloader для нескольких возможных пользовательских форматов нативной рекламы. Приведенный ниже фрагмент кода демонстрирует, как подготовить AdLoader для нескольких пользовательских шаблонов нативной рекламы.

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

Настраиваемые события рекламы в нативном формате

Класс AdLoader предоставляет события типа EventHandler для уведомлений о жизненном цикле пользовательского формата нативной рекламы. В приведенном ниже примере показано, как зарегистрироваться для получения событий, связанных с пользовательскими форматами нативной рекламы:

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

Метод HandleCustomNativeAdLoaded() содержит параметр CustomNativeEventArgs . Доступ к загруженному пользовательскому формату нативной рекламы можно получить через этот параметр события, как показано ниже:

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

Отображение пользовательских форматов нативной рекламы

Пользовательские форматы нативной рекламы поддерживают любое количество определяемых пользователем графических и текстовых ресурсов. Доступ к этим ресурсам осуществляется через класс CustomNativeTemplateAd , который предоставляет методы GetTexture2D() и GetText() , принимающие в качестве параметра идентификатор переменной поля шаблона.

В следующем примере реализации извлекаются ресурсы из объекта 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;
    ...
}

Обработка кликов и показов пользовательских нативных рекламных форматов.

При использовании пользовательских форматов нативной рекламы ваше приложение отвечает за запись показов и передачу данных о кликах в SDK.

Запись впечатлений

Чтобы зарегистрировать показ для пользовательского формата нативной рекламы, вызовите метод RecordImpression() для соответствующего CustomNativeTemplateAd :

customNativeTemplateAd.RecordImpression();

Сообщить о кликах

Чтобы сообщить SDK о клике по ресурсу, вызовите метод PerformClick() соответствующего CustomNativeTemplateAd и передайте имя ресурса, по которому был совершен клик. Например, если у вас есть ресурс в вашем пользовательском формате нативной рекламы под названием "MainImage" и вы хотите сообщить о клике по текстуре, соответствующей этому ресурсу, ваш код будет выглядеть следующим образом:

customNativeTemplateAd.PerformClick("MainImage");

При обнаружении клика по рекламному объявлению, созданному на основе пользовательского шаблона, SDK может ответить двумя способами в указанном порядке:

  1. Найдите средство разрешения контента для URL-адреса прямой ссылки в объявлении и запустите первое, которое разрешит ссылку.
  2. Откройте браузер и перейдите по традиционному целевому URL-адресу объявления.

Настраиваемые действия по клику

Вы можете решить обрабатывать клики самостоятельно для ваших пользовательских форматов нативной рекламы, вместо того чтобы перенаправлять пользователя на прямую ссылку или в веб-браузер. Это можно сделать, указав необязательный Action<CustomNativeTemplateAd, string> в методе AdLoader.Builder.forCustomTemplateAd() . Установив это пользовательское действие клика, вы переопределяете поведение клика SDK, описанное выше. Вот пример, в котором пользовательское действие клика используется для регистрации клика по заданному ресурсу:

private void LoadCustomNativeTemplateAd()
{
    AdLoader adLoader = new AdLoader.Builder("/21775744923/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.");
}