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

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

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

Пользовательские нативные объявления загружаются с помощью объектов AdLoader . Метод ForCustomNativeAd() настраивает AdLoader для обработки пользовательских нативных объявлений. У этого метода два параметра:

  • Параметр formatId для пользовательской рекламы, которую должен запросить AdLoader . Каждому пользовательскому формату нативной рекламы соответствует значение formatID. Этот параметр указывает, какой формат ваше приложение хочет, чтобы AdLoader запросил.
  • Необязательный Action<CustomNativeAd, string> который будет вызываться при нажатии пользователем на объявление.

Пользовательские нативные объявления загружаются через класс AdLoader , который имеет собственный класс AdLoader.Builder для настройки во время создания. Метод ForCustomNativeAd() настраивает AdLoader для обработки нативных объявлений.

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

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

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

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

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

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

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

Метод HandleCustomNativeAdFailedToLoad() содержит параметр AdFailedToLoadEventArgs . Доступ к сообщению об ошибке можно получить, вызвав метод GetMessage для поля LoadAdError , как показано ниже:

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

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

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

Вот пример реализации, которая получает доступ к ресурсам из пользовательской нативной рекламы:

private bool 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;
    adLoaded = true;
    ...
}

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

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

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

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

customNativeAd.RecordImpression();

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

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

customNativeAd.PerformClick("MainImage");

Реагировать на пользовательские действия по клику

При обнаружении клика по пользовательской рекламе SDK выполняет следующие действия в указанном порядке:

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

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

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

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