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

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

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

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

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.");
}