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

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

Загрузить собственное нативное объявление

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

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

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

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