Нативная реклама Android


myTarget SDK предоставляет возможность показывать рекламу в своем приложении, используя собственные визуальные компоненты. SDK загружает данные и предоставляет приложению модель рекламного объявления с определенными свойствами для заполнения визуального компонента, а также методы для подсчета показов и обработки кликов. SDK также предоставляет набор готовых настраиваемых визуальных компонентов, которые вы можете использовать в вашем приложении, вместо создания собственных.

Инициализация

Для показа нативных рекламных объявлений в вашем приложении необходимо создать экземпляр класса NativeAd. Для создания экземпляра NativeAd необходимо указать ваш slotId.

private NativeAd ad;
 
private void initAd()
{
    // Включение режима отладки
    // NativeAd.setDebugMode(true);
 
 
    // Создаем экземпляр NativeAd
    ad = new NativeAd(YOUR_SLOT_ID, this);
}

Загрузка рекламных объявлений

Для получения уведомлений (таких как успешная загрузка данных или ошибка загрузки, клик по рекламному объявлению) необходимо создать экземпляр NativeAdListener и установить его в качестве слушателя событий, после чего можно запустить загрузку данных.
private NativeAd ad;
 
private void initAd()
{
    // Создаем экземпляр NativeAd
    ad = new NativeAd(YOUR_SLOT_ID, this);
     
    // Устанавливаем слушатель событий
    ad.setListener(new NativeAd.NativeAdListener()
    {
        @Override
        public void onLoad(NativePromoBanner banner, NativeAd ad)
        {
        }
 
        @Override
        public void onNoAd(String reason, NativeAd ad)
        {
        }
 
        @Override
        public void onClick(NativeAd ad)
        {
        }
  
        @Override
        public void onShow(NativeAd ad)
        {
        }
 
 
        @Override
        public void onVideoPlay(NativeAd ad)
        {
        }
 
 
        @Override
        public void onVideoPause(NativeAd ad)
        {
        }
 
 
        @Override
        public void onVideoComplete(NativeAd ad)
        {
        }
    });
         
    // Запускаем загрузку данных
    ad.load();
}

Автозагрузка изображений и видео

По умолчанию загружаются изображения и видео. Вы можете выключить автоматическую загрузку изображений и видео, но необходимо учитывать, что на их загрузку потребуется дополнительное время, что создаст дополнительную задержку показа рекламы в вашем приложении.

ad.setCachePolicy(CachePolicy.NONE);
ad.load();
Допустимые значения: CachePolicy.ALL (по-умолчанию), CachePolicy.IMAGE, CachePolicy.VIDEO, CachePolicy.NONE.

Если предзагрузка включена, то соответствующие изображения будут загружены и сохранены в кэш параллельно с загрузкой основных данных рекламного баннера.

Если предзагрузка изображений выключена, то они будут асинхронно и автоматически загружены в момент вызова метода registerView. Дополнительных действий не требуется.

Показ рекламных объявлений

После успешной загрузки данных вы можете использовать свойства полученного экземпляра баннера для заполнения вашего визуального компонента. Доступность свойств зависит от типа рекламируемого объекта - для приложений и сайтов они различаются.

Для показа главной картинки, карусели и проигрывания видео вы должны использовать компонент MediaAdView, предоставляемый SDK.

Для показа иконки следует использовать IconAdView, предоставляемый SDK.

Визуальный компонент должен быть добавлен в контейнер com.my.target.nativeads.views.NativeAdContainer.

Элементам визуального компонента должны быть присвоены соответствующие id, поставляемые с SDK.
Элемент рекламного View
Соответствующий id
Root View (ваш AdView)
R.id.nativeads_ad_view
Advertising Label
R.id.nativeads_advertising
Title
R.id.nativeads_title
Description
R.id.nativeads_description
Rating
R.id.nativeads_rating
Domain
R.id.nativeads_domain
Age Restrictions
R.id.nativeads_age_restrictions
Disclaimer
R.id.nativeads_disclaimer
Call-to-Action
R.id.nativeads_call_to_action
Icon
R.id.nativeads_icon
MediaAdView
R.id.nativeads_media_view
После заполнения визуального компонента вы должны зарегистрировать его в экземпляре NativeAd, используя метод registerView. Если вы собираетесь использовать этот же визуальный компонент для показа других рекламных объявлений, вам необходимо предварительно вызвать метод unregisterView у текущего экземпляра NativeAd до вызова registerView у другого экземпляра. Обработка показов и кликов осуществляется автоматически, при этом приложение не должно блокировать или перехватывать пользовательские события на этом визуальном компоненте. Ниже описаны доступные свойства и приведены примеры заполнения визуальных компонентов для различных типов рекламируемых объектов.
@Override
public void onLoad(NativePromoBanner banner, NativeAd ad)
{
    // Заголовок рекламного объявления
    String title = banner.getTitle();
    // Основной текст
    String description = banner.getDescription();
    // Возрастное ограничение. Может быть null
    String ageRestrictions = banner.getAgeRestrictions();
    // Дисклеймер. Может быть null
    String disclaimer = banner.getDisclaimer();
    // Текст метки "Реклама"
    String advertisingLabel = banner.getAdvertisingLabel();
 
 
    // Иконка
    ImageData icon = banner.getIcon();
    // Текст действия для кнопки
    String ctaText = banner.getCtaText();
    // Свойства, доступные только для объявлений, рекламирующих приложения
    if (banner.getNavigationType().equals(NavigationType.STORE))
    {
        // Рейтинг приложения (0-5)
        float rating = banner.getRating();
        // Количество оценок
        int votes = banner.getVotes();
        // Категория приложения
        String category = banner.getCategory();
        // Подкатегория приложения
        String subcategory = banner.getSubcategory();
    }
    // Свойства, доступные только для объявлений, рекламирующих сайты
    else if (banner.getNavigationType().equals(NavigationType.WEB))
    {
        //Домен сайта
        String domain = banner.getDomain();
    }
     
    // Пример заполнения визуального компонента
    Context context = YourActivity.this;
    LinearLayout adViewLayout = new LinearLayout(context);
    adViewLayout.setId(R.id.nativeads_ad_view);
    TextView titleView = new TextView(context);
    titleView.setId(R.id.nativeads_title);
    titleView.setText(title);
    adViewLayout.addView(titleView);
    TextView descriptionView = new TextView(context);
    descriptionView.setId(R.id.nativeads_description);
    titleView.setText(description);
    adViewLayout.addView(descriptionView);
    Button btn = new Button(context);
    btn.setId(R.id.nativeads_call_to_action);
    btn.setText(ctaText);
    adViewLayout.addView(btn);
 
    // Создаем MediaAdView
    MediaAdView mediaView = NativeViewsFactory.getMediaAdView(context);
    mediaView.setId(R.id.nativeads_media_view);
    // Создаем IconAdView
    IconAdView iconView = new IconAdView(context);
    mediaView.setId(R.id.nativeads_icon);
     
    adViewLayout.addView(mediaView);
    adViewLayout.addView(iconView);
 
 
    // Создаём контейнер для креатива
    NativeAdContainer nativeAdContainer = new NativeAdContainer(context);
    // Добавляем рекламный креатив в контейнер
    nativeAdContainer.addView(adViewLayout);
     
    // Регистрируем визуальный компонент
    ad.registerView(nativeAdContainer);
  
    // Добавляем на экран
    mainLayout.addView(nativeAdContainer, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
Приложение:
Веб-ресурс:

Иконка AdChoices

myTarget SDK автоматически добавляет иконку AdChoices в каждый визуальный компонент. По умолчанию иконка добавляется в правый верхний угол визуального компонента, но вы вы можете выбрать предпочитаемый угол с помощью метода setAdChoicesPlacement(int placement):

...
ad.setAdChoicesPlacement(AdChoicesPlacement.TOP_RIGHT);
ad.load(); 

Настройка кликабельной области

В приведенном выше примере визуальный компонент регистрируется с помощью метода registerView(View view). В этом случае вся область визуального компонента является кликабельной. MyTarget SDK предоставляет возможность указать конкретные визуальные компоненты, клики на которые будут отслеживаться. Для этого воспользуйтесь методом registerView(View view, List<View> clickableViews):
@Override
public void onLoad(NativePromoBanner banner, NativeAd ad)
{
    ...
    ...
    ...
     
    // Создаем массив кликабельных визуальных компонентов, заголовка и кнопки призыва к действию
    ArrayList<View> clickableViews = new ArrayList<>();
    clickableViews.add(titleView);
    clickableViews.add(btn);
    // Регистрируем визуальный компонент, с кликабельными заголовком и кнопкой призыва к действию
    ad.registerView(adViewLayout, clickableViews);
  
    // Добавляем на экран
    mainLayout.addView(adViewLayout, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}

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

MyTarget SDK предоставляет готовый настраиваемый визуальный компонент, внешний вид которого вы можете настраивать под дизайн своего приложения.

Ниже приведены примеры и описаны доступные для настройки свойства.
NativeAdView
public void onLoad(NativePromoBanner banner, NativeAd ad)
{
    // Создаем визуальный компонент
    NativeAdView nativeAdView = NativeViewsFactory.getNativeAdView(ad, YourActivity.this);
     
    // Доступные для настройки внутренние визуальные компоненты
    TextView advLabelView = nativeAdView.getAdvertisingTextView();
    TextView ageRestrictionView = nativeAdView.getAgeRestrictionTextView();
    TextView disclaimerView = nativeAdView.getDisclaimerTextView();
    TextView titleView = nativeAdView.getTitleTextView();
    TextView descriptionView = nativeAdView.getDescriptionTextView();  
    Button ctaBtn = nativeAdView.getCtaButtonView();
    TextView votesView = nativeAdView.getVotesTextView();
    StarsRatingView starsRatingView = nativeAdView.getStarsRatingView();
    TextView domainView = nativeAdView.getDomainOrCategoryTextView();
    MediaAdView mediaView = nativeAdView.getMediaAdView();
    IconAdView iconView = nativeAdView.getIconImageView();
 
    // Создаём контейнер для креатива
    NativeAdContainer nativeAdContainer = new NativeAdContainer(context);
    // Добавляем рекламный креатив в контейнер
    nativeAdContainer.addView(nativeAdView);
     
    // Регистрируем визуальный компонент
    ad.registerView(nativeAdContainer);
     
    // Добавляем на экран
    mainLayout.addView(nativeAdContainer, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
Приложение:
Веб-ресурс:
Видео:
Карточки:

Загрузка нескольких баннеров

MyTarget SDK предоставляет класс NativeAdLoader, который дает возможность загрузить от 1 до 20 баннеров одним запросом. Для NativeAdLoader вы можете настроить все те же параметры, которые доступны для настройки в NativeAd (например, параметры пола и возраста пользователя, автозагрузку изображений и видео). myTarget SDK не гарантирует, что будет загружено количество баннеров, указанное в параметре COUNT - этот параметр указывает на максимальное количество баннеров, которое вы хотите получить.
// Включение режима отладки
// NativeAdLoader.setDebugMode(true);  
 
// Создаем NativeAdLoader
NativeAdLoader nativeAdLoader = NativeAdLoader.newLoader(YOUR_SLOT_ID, COUNT, this);
 
// Устанавливаем OnLoad коллбек и загружаем баннеры
nativeAdLoader.setOnLoad(new OnLoad()
{
   @Override
   public void onLoad(@NonNull List<NativeAd> ads)
   {
      for (NativeAd ad : ads)
      {
        // Устанавливаем слушатель событий
        ad.setListener(nativeAdListener);
         
        NativePromoBanner promoBanner = ad.getBanner();
        // Код, аналогичный методу onLoad интерфейса NativeAdListener
      }
   }
}).load();
Полученный массив будет содержать от 0 до COUNT объектов NativeAd - каждый из них содержит уже загруженный NativePromoBanner и с каждым из них надо работать так же, как описано в этой документации выше, начиная с вызова метода onLoad.

Медиация с другими рекламными SDK

Для нативной рекламы поддерживается медиация с Mopub и Admob SDK.

Медиация Admob

Admob официально поддерживает медиацию myTarget. Чтобы настроить показ баннеров myTarget при помощи SDK Admob, нужно сделать следующее:

  1. Настроить группу медиации в настройках рекламного блока AdMob Пожалуйста, ознакомьтесь с полной версией инструкции
    https://developers.google.com/admob/android/mediation/mytarget#step_2_configure_mediation_settings_for_your_admob_ad_unit
  2. Импортировать myTarget SDK и адаптер. Никакого дополнительного кода писать не нужно
  3. Протестировать интеграцию

Медиация Mopub

Настройка медиации осуществляется на сайте http://www.mopub.com/

Для создания сети медиации, нужно зайти в раздел Networks и добавить Custom Native Network, где необходимо задать следующие поля:
Поле
Значение
CUSTOM EVENT CLASS
com.mopub.nativeads.MyTargetCustomEventNative
CUSTOM EVENT CLASS DATA
{"slotId":"<your slot id>"}
Вам помогла эта статья?
Да
Нет