Рекламные форматы Android


Баннеры

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

Для показа баннеров форматов 320x50, 300x250 и 728x90 и Adaptive в своем приложении необходимо создать экземпляр класса MyTargetView. MyTargetView - визуальный компонент, наследник ViewGroup, который должен быть добавлен на экран приложения.

После создания экземпляра ему необходимо установить ваш slotId.

По умолчанию устанавливается адаптивный формат баннера. При этом баннер автоматически растягивается по ширине экрана с сохранением пропорций, а высота будет не менее 50dip, но не более 15% от высоты экрана. Система сама следит за изменением размеров экрана/переворотом и изменяет размер баннера соответственно.

Есть возможность переустановить свойство adSize. В этом случае SDK перестанет отслеживать изменения ориентации устройства и менять размеры адаптивного баннера. В этом случае при использовании баннеров адаптивного размера необходимо самостоятельно отслеживать изменения

private MyTargetView adView;
 
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_layout);
 
    // Включение режима отладки
    // MyTargetView.setDebugMode(true);
 
 
    // Создаем экземпляр MyTargetView
    adView = new MyTargetView(this);
     
    // Задаём id слота
    adView.setSlotId(YOUR_SLOT_ID);
 
    // опционально: если не задать размер, то будет использоваться адаптивный формат
    adView.setAdSize(AdSize.ADSIZE_320x50);
}

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

Созданный и настроенный экземпляр MyTargetView необходимо добавить на экран приложения. Для получения уведомлений (таких как успешная загрузка данных или ошибка загрузки, клик по рекламному объявлению) необходимо создать экземпляр MyTargetView.MyTargetViewListener и установить его в качестве слушателя событий, после чего можно запустить загрузку данных. После успешной загрузки данных можно запустить показ рекламных объявлений.
private MyTargetView adView;
 
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_layout);
 
 
    RelativeLayout layout = (RelativeLayout) findViewById(R.id.activityLayout);
 
    // Создаем экземпляр MyTargetView
    adView = new MyTargetView(this);
     
    // Устанавливаем id слота
    adView.setSlotId(YOUR_SLOT_ID);
 
    // Устанавливаем LayoutParams
    adViewLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    adViewLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    adView.setLayoutParams(adViewLayoutParams);
     
    // Устанавливаем слушатель событий
    adView.setListener(new MyTargetView.MyTargetViewListener()
    {
        @Override
        public void onLoad(MyTargetView myTargetView)
        {
            // Данные успешно загружены, запускаем показ объявлений
            layout.addView(adView);
        }
 
        @Override
        public void onNoAd(String reason, MyTargetView myTargetView)
        {  
        }
 
 
        @Override
        public void onShow(MyTargetView myTargetView)
        {
        }
 
        @Override
        public void onClick(MyTargetView myTargetView)
        {
        }
    });
     
    // Запускаем загрузку данных
    adView.load();
}
     
@Override
protected void onDestroy()
{
    if (adView != null) adView.destroy();
    super.onDestroy();
}

Установка MyTargetView в xml

Имеется возможность установить MyTargetView как элемента в layout xml.
<com.my.target.ads.MyTargetView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/view_ad"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:myTarget_isRefreshAd="false"  // отключение ротации баннеров
    app:myTarget_adSize="banner_320x50" // указание формата, воможные значения: banner_320x50, banner_30x250, banner_728x90, adaptive
    app:myTarget_slotId="7250"> // номер слота
</com.my.target.ads.MyTargetView>

Ротация

Рекламные объявления ротируются каждые 60 секунд. Вы можете отключить автоматическую ротацию объявлений при инициализации экземпляра MyTargetView. Ротируются только баннеры форматов 320х50 и 728x90, баннеры 300х250 не ротируются.
// Выключение автоматической ротации баннеров
adView.setRefreshAd(false);
Баннер 320x50

Полноэкранная реклама

myTarget SDK предоставляет возможность показывать полноэкранную рекламу в своем приложении. Возможны два способа показа полноэкранной рекламы - в отдельном Activity или в диалоговом окне. Мы рекомендуем использовать показ в отдельном Activity, поскольку показ через диалоговое окно поддерживает не все возможности полноэкранной рекламы.

Для показа полноэкранной рекламы, необходимо сконфигурировать AndroidManifest.xml, добавив в раздел application MyTargetActivity:
<activity android:name="com.my.target.ads.MyTargetActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

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

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

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

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

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

После успешной загрузки данных вы можете запустить показ полноэкранной рекламы.
@Override
public void onLoad(InterstitialAd ad)
{
    // Запускаем показ
    // в отдельном Activity
    ad.show();
     
    // или в диалоговом окне
    //ad.showDialog();
}
Пример полноэкранного баннера

Полноэкранная реклама с вознаграждением (Rewarded видео)

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

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

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

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

Для получения уведомлений (таких как успешная загрузка данных или ошибка загрузки, клик по рекламному объявлению) необходимо создать экземпляр реализующий интерфейс RewardedAd.RewardedAdListener и установить его в качестве слушателя событий, после чего можно запустить загрузку данных.
private RewardedAd ad;
 
private void initAd()
{
    // Создаем экземпляр RewardedAd
    ad = new RewardedAd(YOUR_SLOT_ID, this);
    // Устанавливаем слушатель событий
    ad.setListener(new RewardedAd.RewardedAdListener()
    {
        @Override
        public void onLoad(RewardedAd ad)
        {
        }
 
        @Override
        public void onNoAd(String reason, RewardedAd ad)
        {
        }
  
        @Override
        public void onClick(RewardedAd ad)
        {
        }
  
        @Override
        public void onDisplay(RewardedAd ad)
        {
        }
  
        @Override
        public void onDismiss(RewardedAd ad)
        {
        }
  
        @Override
        void onReward(@NonNull Reward reward, @NonNull RewardedAd ad)
        {
        }
    });
     
    // Запускаем загрузку данных
    ad.load();
}

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

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

@Override
public void onLoad(RewardedAd ad)
{
    // Запускаем показ
    ad.show();
}

Reward

При получении награды за просмотр полноэкранной рекламы в метод onReward слушателя передаётся объект Reward, содержащий поле type
Reward.type

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

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.
После заполнения визуального компонента вы должны зарегистрировать его в экземпляре 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.

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

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

После заполнения визуального компонента вы должны зарегистрировать его в экземпляре 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.

In-stream видео

myTarget SDK предоставляет возможность показывать in-stream видео-рекламу в своем приложении, во время просмотра видео. Реклама может быть показана перед началом показа видео (preroll), во время показа (midroll) и после показа (postroll). SDK загружает данные и предоставляет приложению возможность показывать рекламу как в своем видео-плеере, так и в плеере приложения.

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

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

Использование плеера приложения

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

Для использования своего плеера надо вызвать метод setPlayer(InstreamAdPlayer player) у созданного экземпляра InstreamAd.
private InstreamAd ad;
 
private void initAd()
{
    // Создаем экземпляр InstreamAd
    ad = new InstreamAd(YOUR_SLOT_ID, this);
     
    // Устанавливаем плеер
    ad.setPlayer(YOUR_PLAYER);
}

Интерфейс InstreamAdPlayer

Методы интерфейса InstreamAdPlayer вызываются экземпляром InstreamAd. Вызывать их самостоятельно не требуется.
1. Длительность рекламного видео
float getAdVideoDuration();
2. Текущая позиция рекламного видео. Метод вызывается многократно во время воспроизведения рекламного видео и должен отдавать актуальное значение в секундах.
float getAdVideoPosition();
3. Устанавливает слушатель плеера
void setAdPlayerListener(AdPlayerListener listener);
4. Визуальное представление плеера, обычно this.
View getView();
5. Устанавливает громкость от 0 до 1.
void setVolume(float volume);
6. Запускает воспроизведение рекламного видео.

  • uri - путь к видео
  • width - ширина видео в пикселях
  • height - высота видео в пикселях
void playAdVideo(Uri uri, int width, int height);
7. Приостанавливает проигрывание рекламного видео.
void pauseAdVideo();
8. Возобновляет проигрывание рекламного видео.
void resumeAdVideo();
9. Останавливает проигрывание рекламного видео.
void stopAdVideo();

Интерфейс InstreamAdPlayer.AdPlayerListener

Методы обратного вызова интерфейса AdPlayerListener для установленного слушателя должны быть вызваны плеером в ответ на вызовы методов интерфейса InstreamAdPlayer при наступлении определенных событий.
void onAdVideoStarted();
Метод должен быть вызван после успешного начала воспроизведения рекламного видео, как ответ на вызов метода playAdVideo().
void onAdVideoPaused();
Метод должен быть вызван после приостановки проигрывания рекламного видео, как ответ на вызов метода pauseAdVideo().
void onAdVideoResumed();
Метод должен быть вызван после возобновления проигрывания рекламного видео, как ответ на вызов метода resumeAdVideo().
void onAdVideoStopped();
Метод должен быть вызван после остановки проигрывания рекламного видео, как ответ на вызов метода stopAdVideo().
void onAdVideoError(String message);
Метод должен быть вызван при возникновении какой-либо ошибки при проигрывании рекламного видео.
void onAdVideoCompleted();
Метод должен быть вызван при завершении проигрывания рекламного видео.
void onVolumeChanged(float volume);
Метод должен быть вызван при изменении громкости.

Использование плеера SDK

myTarget SDK предоставляет готовый плеер для проигрывания рекламы. Для использования плеера SDK достаточно вызвать метод useDefaultPlayer() у созданного экземпляра InstreamAd и добавить плеер на экран приложения.
private InstreamAd ad;
 
private void initAd()
{
    // Создаем экземпляр InstreamAd
    ad = new InstreamAd(YOUR_SLOT_ID, this);
     
    // Устанавливаем плеер SDK
    ad.useDefaultPlayer();
    // Добавляем плеер на экран
    layout.addView(ad.getPlayer().getView());
}

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

Для получения уведомлений (таких как успешная загрузка данных или ошибка загрузки, показ рекламного объявления) необходимо создать экземпляр InstreamAdListener и установить его в качестве слушателя событий, после чего можно запустить загрузку данных.
private InstreamAd ad;
 
private void initAd()
{
    // Создаем экземпляр InstreamAd
    ad = new InstreamAd(YOUR_SLOT_ID, this);
     
    // Устанавливаем слушатель событий
    ad.setListener(new InstreamAd.InstreamAdListener()
    {
        @Override
        public void onLoad(InstreamAd instreamAd)
        {
            // Данные успешно загружены
        }
 
        @Override
        public void onNoAd(String reason, InstreamAd instreamAd)
        {
            // Данные не получены
        }
 
        @Override
        public void onError(String reason, InstreamAd ad)
        {
            // При проигрывании рекламного видео произошла ошибка
        }
 
        @Override
        public void onBannerStart(InstreamAd ad, InstreamAd.InstreamAdBanner instreamAdBanner)
        {
            // Началось проигрывание рекламного видео
        }

        @Override
        public void onBannerPause(InstreamAd ad, InstreamAd.InstreamAdBanner instreamAdBanner)
        {
            // Проигрывание рекламного видео приостановлено
        }
        @Override
        public void onBannerResume(InstreamAd ad, InstreamAd.InstreamAdBanner instreamAdBanner)
        {
            // Проигрывание рекламного видео возобновлено
        }
        @Override
        public void onBannerComplete(InstreamAd ad, InstreamAd.InstreamAdBanner instreamAdBanner)
        {
            // Проигрывание рекламного видео завершено
        }
 
        @Override
        public void onBannerTimeLeftChange(float timeLeft, float duration, InstreamAd ad)
        {
            // Вызывается многократно во время воспроизведения рекламного видео, используется для обновления таймера до окончания показа рекламного видео
        }
 
        @Override
        public void onComplete(String section, InstreamAd ad)
        {
            // Проигрывание всех рекламных видео в рекламной секции завершено
        }
    });
         
    // Запускаем загрузку данных
    ad.load();
}

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

После успешной загрузки данных вы можете запустить показ рекламных секций. Каждая секция секция может содержать несколько рекламных видео, после начала проигрывания каждого будет вызван метод onBannerStart в установленном слушателе InstreamAdListener, после завершения проигрывания каждого видео будет вызван метод onBannerComplete. После завершения проигрывания всех рекламных видео в запущенной секции будет вызван метод onComplete - именно его вы должны использовать для дальнейших действий, он будет вызван даже если в процессе проигрывания произошла ошибка и был вызван метод onError.

Показ preroll и postroll секций

Для показа preroll секции необходимо перед началом показа видео вызвать метод startPreroll у экземпляра InstreamAd.

Для показа postroll секции необходимо после окончания показа видео вызвать метод startPostroll.
// Перед началом показа основного видео
ad.startPreroll();
 
// После показа основного видео
ad.startPostroll();

Показ midroll секции

Для показа midroll секции в какой-то позиции видео необходимо после создания экземпляра InstreamAd задать массив позиций, на которых планируется показ midroll секции. Позиции можно задавать как в секундах, так и в процентах от длительности видео.

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

Если позиции не были заданы приложением, они будут установлены сервером. Если массив позиций после загрузки оказался пустой, значит, данных для показа midroll секции нет.
private InstreamAd ad;
 
private void initAd()
{
    // Создаем экземпляр InstreamAd
    ad = new InstreamAd(YOUR_SLOT_ID, this);
     
    // Устанавливаем позиции на первой и пятой секунде видео
    ad.configureMidpoints(videoDuration, new float[]{1f,5f});
    // или в процентах, на 10% и 50% видео
    // ad.configureMidpointsPercents(videoDuration, new float[]{10f,50f});
 
    // Устанавливаем слушатель событий
    ad.setListener(new InstreamAd.InstreamAdListener()
    {
        @Override
        public void onLoad(InstreamAd instreamAd)
        {
            // Данные успешно загружены
            // Массив позиций (в секундах), доступных для показа midroll секции
            adPositions = ad.getMidPoints();
        }
         
        ...
    });
     
    // Запускаем загрузку данных
    ad.load();
}
При достижении основным видео одной из позиций для midroll секции необходимо вызвать метод startMidroll и передать в него в качестве параметра эту позицию.
// Видео доигралось до 5-й секунды и для неё есть позиция в массиве adPositions
ad.startMidroll(adPositions[1]);

Доступные свойства рекламного видео

В методы onBannerStart и onBannerComplete слушателя InstreamAdListener передается экземпляр InstreamAdBanner, содержащий информацию о текущем рекламном видео, которая может быть использована приложением.
public final float duration;
Длительность текущего рекламного видео в секундах.
public final boolean allowClose;
Разрешено ли закрывать рекламное видео во время проигрывания. Используется для управления показом кнопки «Закрыть» или «Пропустить».
public final float allowCloseDelay;
Время в секундах, через которое рекламное видео может быть закрыто. Используется для управления показом кнопки «Закрыть» или «Пропустить».
public final int videoWidth;
public final int videoHeight;
Ширина и высота рекламного видео.
public String ctaText;
Текст для call-to-action кнопки.

Обработка кликов

Приложение должно самостоятельно отслеживать клики по рекламному видео (как правило, по cta кнопке) и вызывать метод handleClick в экземпляре InstreamAd для обработки клика и перехода на рекламируемый сайт или приложение.
private void onAdClick()
{
    ad.handleClick();
}

Управление состоянием

У экземпляра InstreamAd доступны следующие методы управления.
public void pause()
Приостанавливает проигрывание рекламного видео.
public void resume()
Возобновляет проигрывание рекламного видео.
public void stop()
Останавливает показ рекламной секции.
public void skip()
Останавливает показ рекламной секции, если это было сделано пользователем (нажатие на кнопку «Пропустить» или «Закрыть»).
public void skipBanner()
Останавливает текущее рекламное видео и переходит к следующему, если это было сделано пользователем (нажатие на кнопку «Пропустить» или «Закрыть»).
public void setVolume(float volume)
Устанавливает громкость от 0 до 1.
public void setLoadingTimeout(int loadingTimeout)
Устанавливает таймаут на загрузку рекламы в секундах. В случае если по истечению указанного интервала не удалось получить баннеры, будет вызван коллбек onNoAd. Значение по умолчанию — 10 секунд, минимальное значение — 5 секунд.

Пользовательские данные

Для лучшего подбора рекламных объявлений, вы можете дополнительно задать пол и возраст пользователя. Если ваше приложение использует собственную модель локализации, вы также можете указать язык выбранной локализации в формате ISO 639-1 ("ru", "en", "fr" и т.д.).

Для задания пользовательских данных вам нужно воспользоваться свойством customParams.

private InstreamAd ad;
 
private void initAd()
{
    // Создаем экземпляр InstreamAd
    ad = new InstreamAd(YOUR_SLOT_ID, this);
    // Получаем экземпляр дополнительных параметров CustomParams
    CustomParams customParams = ad.getCustomParams();
    // Задаем возраст
    customParams.setAge(25);
    // Задаем пол
    customParams.setGender(CustomParams.Gender.MALE);
}

Примеры

Примеры интеграции доступны в нашем демоприложении на Github.

In-stream аудио

myTarget SDK предоставляет возможность проигрывать in-stream аудио-рекламу в своем приложении во время прослушивания аудио.

Реклама может быть запущена перед началом проигрывания аудио (preroll), во время проигрывания (midroll) и после проигрывания (postroll). SDK загружает данные и предоставляет приложению возможность проигрывать рекламу в плеере приложения.

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

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

Для каждого аудио в приложении требуется создавать свой экземпляр класса InstreamAudioAd.

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

Использование плеера приложения

Для проигрывания рекламы в плеере приложения он должен реализовывать интерфейс InstreamAudioAdPlayer и уведомлять установленный ему слушатель AdPlayerListener.

Для использования своего плеера надо вызвать метод setPlayer(InstreamAudioAdPlayer player) у созданного экземпляра InstreamAudioAd.
private InstreamAudioAd ad;
 
private void initAd()
{
    // Создаем экземпляр InstreamAudioAd
    ad = new InstreamAudioAd(YOUR_SLOT_ID, this);
     
    // Устанавливаем плеер
    ad.setPlayer(YOUR_PLAYER);
}

Интерфейс InstreamAudioAdPlayer

Методы интерфейса InstreamAudioAdPlayer вызываются экземпляром InstreamAudioAd. Вызывать их самостоятельно не требуется.
float getAdAudioDuration();
Длительность рекламного аудио
float getAdAudioPosition();
Текущая позиция рекламного аудио. Метод вызывается многократно во время проигрывания рекламного аудио и должен отдавать актуальное значение в секундах.
void setAdPlayerListener(AdPlayerListener listener);
Устанавливает слушатель плеера
Context getCurrentContext();
Текущий контекст.
void setVolume(float volume);
Устанавливает громкость от 0 до 1.
void playAdAudio(Uri uri);
Запускает воспроизведение рекламного аудио.

uri — путь к аудио
void pauseAdAudio();
Приостанавливает проигрывание рекламного аудио.
void resumeAdAudio();
Возобновляет проигрывание рекламного аудио.
void stopAdAudio();
Останавливает проигрывание рекламного аудио.

Интерфейс InstreamAudioAdPlayer.AdPlayerListener

Методы обратного вызова интерфейса AdPlayerListener для установленного слушателя должны быть вызваны плеером в ответ на вызовы методов интерфейса InstreamAudioAdPlayer при наступлении определенных событий.
void onAdAudioStarted();
Метод должен быть вызван после успешного начала воспроизведения рекламного аудио, как ответ на вызов метода playAdAudio().
void onAdAudioPaused();
Метод должен быть вызван после приостановки проигрывания рекламного видео, как ответ на вызов метода pauseAdVideo().
void onAdAudioResumed();
Метод должен быть вызван после возобновления проигрывания рекламного аудио, как ответ на вызов метода resumeAdAudio().
void onAdAudioStopped();
Метод должен быть вызван после остановки проигрывания рекламного аудио, как ответ на вызов метода stopAdAudio().
void onAdAudioError(String message);
Метод должен быть вызван при возникновении какой-либо ошибки при проигрывании рекламного аудио.
void onAdAudioCompleted();
Метод должен быть вызван при завершении проигрывания рекламного аудио.
void onVolumeChanged(float volume);
Метод должен быть вызван при изменении громкости.

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

Для получения уведомлений (таких как успешная загрузка данных или ошибка загрузки) необходимо создать экземпляр InstreamAudioAdListener и установить его в качестве слушателя событий, после чего можно запустить загрузку данных.
private InstreamAudioAd ad;
 
private void initAd()
{
    // Создаем экземпляр InstreamAudioAd
    ad = new InstreamAudioAd(YOUR_SLOT_ID, this);
     
    // Устанавливаем слушатель событий
    ad.setListener(new InstreamAudioAd.InstreamAudioAdListener()
    {
        @Override
        public void onLoad(InstreamAudioAd ad)
        {
            // Данные успешно загружены
        }
 
        @Override
        public void onNoAd(String reason, InstreamAudioAd ad)
        {
            // Данные не получены
        }
 
        @Override
        public void onError(String reason, InstreamAudioAd ad)
        {
            // При проигрывании рекламного аудио произошла ошибка
        }
 
        @Override
        public void onBannerStart(InstreamAudioAd ad, InstreamAudioAd.InstreamAudioAdBanner banner)
        {
            // Началось проигрывание рекламного аудио
        }
 
        @Override
        public void onBannerComplete(InstreamAudioAd ad, InstreamAudioAd.InstreamAudioAdBanner banner)
        {
            // Проигрывание рекламного аудио завершено
        }
 
        @Override
        public void onBannerTimeLeftChange(float timeLeft, float duration, InstreamAudioAd ad)
        {
            // Вызывается многократно во время воспроизведения рекламного аудио, используется для обновления таймера до окончания показа рекламного аудио
        }
 
        @Override
        public void onComplete(String section, InstreamAudioAd ad)
        {
            // Проигрывание всех рекламных аудио в рекламной секции завершено
        }
    });
         
    // Запускаем загрузку данных
    ad.load();
}

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

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

Каждая секция секция может содержать несколько рекламных аудио, после начала проигрывания каждого будет вызван метод onBannerStart в установленном слушателе InstreamAudioAdListener, после завершения проигрывания каждого аудио будет вызван метод onBannerComplete.

После завершения проигрывания всех рекламных аудио в запущенной секции будет вызван метод onComplete — именно его вы должны использовать для дальнейших действий. Он будет вызван даже если в процессе проигрывания произошла ошибка и был вызван метод onError.

Показ preroll и postroll секций

Для проигрывания preroll секции необходимо перед началом проигрывания аудио вызвать метод startPreroll у экземпляра InstreamAudioAd.

Для проигрывания postroll секции необходимо после окончания проигрывания аудио вызвать метод startPostroll.
// Перед началом проигрывания основного аудио
ad.startPreroll();
 
// После проигрывания основного аудио
ad.startPostroll();

Показ midroll секции

Для проигрывания midroll секции в какой-то позиции аудио, необходимо после создания экземпляра InstreamAudioAd задать массив позиций, на которых планируется проигрывание midroll секции. Позиции можно задавать как в секундах, так и в процентах от длительности аудио.

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

Если массив позиций после загрузки оказался пустой, значит данных для проигрывания midroll секции нет.
private InstreamAudioAd ad;
 
private void initAd()
{
    // Создаем экземпляр InstreamAudioAd
    ad = new InstreamAudioAd(YOUR_SLOT_ID, this);
     
    // Устанавливаем позиции на первой и пятой секунде аудио
    ad.configureMidpoints(videoDuration, new float[]{1f,5f});
    // или в процентах, на 10% и 50% аудио
    // ad.configureMidpointsPercents(audioDuration, new float[]{10f,50f});
 
    // Устанавливаем слушатель событий
    ad.setListener(new InstreamAudioAd.InstreamAudioAdListener()
    {
        @Override
        public void onLoad(InstreamAudioAd ad)
        {
            // Данные успешно загружены
            // Массив позиций (в секундах), доступных для проигрывания midroll секции
            adPositions = ad.getMidPoints();
        }
         
        ...
    });
     
    // Запускаем загрузку данных
    ad.load();
}
При достижении основным аудио одной из позиций для midroll секции, необходимо вызвать метод startMidroll и передать в него в качестве параметра эту позицию.
// Аудио доигралось до 5-й секунды и для неё есть позиция в массиве adPositions
ad.startMidroll(adPositions[1]);

Доступные свойства рекламного аудио

В методы onBannerStart и onBannerComplete слушателя InstreamAudioAdListener передается экземпляр InstreamAudioAdBanner, содержащий информацию о текущем рекламном аудио, которая может быть использована приложением.
float getDuration();
Длительность текущего рекламного аудио в секундах.
boolean isAllowSeek();
Разрешено ли прокручивать рекламное аудио.
boolean isAllowSkip();
Разрешено ли пропускать рекламное аудио.
boolean isAllowTrackChange();
Разрешено ли переходить к следующему треку.
List<InstreamAdCompanionBanner> getInstreamAdCompanionBanners();
Список баннеров-компаньонов.
String getAdText();
Рекламный текст.

Работа с баннерами-компаньонами

Приложение должно самостоятельно отслеживать показы и клики по баннерам-компаньонам и вызывать методы handleCompanionShow и handleCompanionClick в экземпляре InstreamAudioAd для обработки показа и клика и перехода на рекламируемый сайт или приложение.
private void onCompanionAdShow(InstreamAdCompanionBanner companionBanner)
{
    ad.handleCompanionShow(companionBanner);
}
 
private void onCompanionAdClick(InstreamAdCompanionBanner companionBanner)
{
    // Обработка клика в контексте текущей активности
    ad.handleCompanionClick(companionBanner, context);
 
    // Обработка клика в контексте, который был передан при создании рекламного экземпляра
    // ad.handleCompanionClick(companionBanner);
}

Управление состоянием

У экземпляра InstreamAudioAd доступны следующие методы управления.
public void pause()
Приостанавливает проигрывание рекламного аудио.
public void resume()
Возобновляет проигрывание рекламного аудио.
public void stop()
Останавливает показ рекламной секции.
public void skip()
Останавливает показ рекламной секции, если это было сделано пользователем (нажатие на кнопку «Пропустить» или «Закрыть»).
public void skipBanner()
Останавливает текущее рекламное аудио и переходит к следующему, если это было сделано пользователем (нажатие на кнопку «Пропустить» или «Закрыть»).
public void setVolume(float volume)
Устанавливает громкость от 0 до 1.
public void setLoadingTimeout(int loadingTimeout)
Устанавливает таймаут на загрузку рекламы в секундах. В случае если по истечению указанного интервала не удалось получить баннеры, будет вызван коллбек onNoAd. Значение по умолчанию — 10 секунд, минимальное значение — 5 секунд.

Пользовательские данные

Для лучшего подбора рекламных объявлений, вы можете дополнительно задать пол и возраст пользователя. Если ваше приложение использует собственную модель локализации, вы также можете указать язык выбранной локализации в формате ISO 639-1 ("ru", "en", "fr" и т.д.).

Для задания пользовательских данных вам нужно воспользоваться свойством customParams.
private InstreamAudioAd ad;
 
private void initAd()
{
    // Создаем экземпляр InstreamAudioAd
    ad = new InstreamAudioAd(YOUR_SLOT_ID, this);
    // Получаем экземпляр дополнительных параметров CustomParams
    CustomParams customParams = ad.getCustomParams();
    // Задаем возраст
    customParams.setAge(25);
    // Задаем пол
    customParams.setGender(CustomParams.Gender.MALE);
}

Примеры

Примеры интеграции доступны в нашем демоприложении на Github.
Вам помогла эта статья?
Да
Нет