Нативные баннеры Android


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

Нативный баннер не поддерживает MediaAdView и поэтому не может отображать медиа-контент (видео, карточки, большую картинку).

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

Для показа нативных баннеров в вашем приложении необходимо создать экземпляр класса NativeBannerAd. Для создания экземпляра NativeBannerAd необходимо указать ваш slotId.
private NativeBannerAd ad;
 
private void initAd()
{
    // Включение режима отладки
    // NativeBannerAd.setDebugMode(true);  
 
 
    // Создаем экземпляр NativeBannerAd
    ad = new NativeBannerAd(YOUR_SLOT_ID, this);
}

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

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

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

По умолчанию загружаются и кэшируются все изображения рекламного баннера. Вы можете выключить автоматическую загрузку изображений, но необходимо учитывать, что на их загрузку потребуется дополнительное время, что создаст дополнительную задержку показа рекламы в вашем приложении.
ad.setCachePolicy(CachePolicy.NONE);
ad.load();
Допустимые значения: CachePolicy.ALL (по-умолчанию), CachePolicy.IMAGE, CachePolicy.NONE.

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

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

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

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

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

Визуальные компоненты (как стандартные, так и собственные) следует положить внутрь контейнера NativeAdContainer.
При этом в метод registerView можно передавать как сам компонент, так и контейнер.
При создании контейнера, визуальный компонент adView будет добавлен как subview в контейнер и растянут по размерам контейнера.

Элементам визуального компонента должны быть присвоены соответствующие id, поставляемые с SDK

Элемент рекламного View
Соответствующий id
Root View (ваш AdView)
R.id.nativeads_ad_view
Advertising Label
R.id.nativeads_advertising
Title
R.id.nativeads_title
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
После заполнения визуального компонента вы должны зарегистрировать его в экземпляре NativeAd, используя метод registerView. Если вы собираетесь использовать этот же визуальный компонент для показа других рекламных объявлений, вам необходимо предварительно вызвать метод unregisterView у текущего экземпляра NativeAd до вызова registerView у другого экземпляра. Обработка показов и кликов осуществляется автоматически, при этом приложение не должно блокировать или перехватывать пользовательские события на этом визуальном компоненте. Ниже описаны доступные свойства и приведены примеры заполнения визуальных компонентов для различных типов рекламируемых объектов.
@Override
public void onLoad(NativeBanner banner, NativeBannerAd ad)
{
    // Заголовок рекламного объявления
    String title = banner.getTitle();
    // Возрастное ограничение. Может быть 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();
    }
    // Свойства, доступные только для объявлений, рекламирующих сайты
    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);
    Button btn = new Button(context);
    btn.setId(R.id.nativeads_call_to_action);
    btn.setText(ctaText);
    adViewLayout.addView(btn);
 
    // Компонент показа иконки
    IconAdView iconView = new IconAdView(context);
    mediaView.setId(R.id.nativeads_icon);
     
    adViewLayout.addView(iconView);
 
 
    // Создаём контейнер для креатива
    NativeAdContainer nativeAdContainer = new NativeAdContainer(context);
    // Добавляем рекламный креатив в контейнер
    nativeAdContainer.addView(adViewLayout);
     
    // Регистрируем визуальный компонент
    ad.registerView(adViewLayout);
  
    // Добавляем на экран
    mainLayout.addView(nativeAdContainer, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
Приложение:
Веб-ресурс:

Иконка AdChoices

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

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

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

В приведенном выше примере визуальный компонент регистрируется с помощью метода registerView(View view). В этом случае вся область визуального компонента является кликабельной. MyTarget SDK предоставляет возможность указать конкретные визуальные компоненты, клики на которые будут отслеживаться. Для этого воспользуйтесь методом registerView(View view, List<View> clickableViews):


@Override
public void onLoad(NativeBanner banner, NativeBannerAd 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 предоставляет готовый настраиваемый визуальный компонент, внешний вид которого вы можете настраивать под дизайн своего приложения.

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

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

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

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