Базовая интеграция (ExoPlayer AdsLoader API)
YandexAdsLoader — упрощенный API для интеграции InStream-рекламы через Media3 и ExoPlayer. YandexAdsLoader поддерживает воспроизведение рекламных вставок с типом Pre-roll, Mid-roll, Post-roll.
Данный тип интеграции подходит для приложений, которым не нужны расширенные возможности InStream API.
Подключение с использованием Gradle
В файл build.gradle добавьте следующие зависимости на уровне приложения:
dependencies {
...
implementation 'com.yandex.android:mobileads:7.5.0'
implementation 'androidx.media3:media3-exoplayer:1.4.1'
}
dependencies {
...
implementation 'com.yandex.android:mobileads:7.5.0'
implementation 'com.google.android.exoplayer:exoplayer-core:2.18.1'
}
Показ рекламных объявлений
-
Добавьте в layout приложения PlayerView:
Media3ExoPlayer<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <androidx.media3.ui.PlayerView android:id="@+id/player_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" /> </FrameLayout>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.google.android.exoplayer2.ui.PlayerView android:id="@+id/player_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" /> </FrameLayout>
-
Создайте конфигурацию запроса
instreamAdRequestConfiguration
с помощью классаInstreamAdRequestConfiguration.Builder
. В качестве параметров запроса передайте идентификатор страницы (Page_ID
) из Партнерского интерфейса.Примечание
Для использования YandexAdsLoader с Media3 стоит импортировать его из пакета com.yandex.mobile.ads.instream.media3, для использования с ExoPlayer — из пакета com.yandex.mobile.ads.instream.exoplayer.
-
Создайте экземпляр класса
YandexAdsLoader
для показа и загрузки InStream-рекламы. -
Создайте экземпляр класса
DefaultMediaSourceFactory
, установите в него созданный экземплярYandexAdsLoader
иPlayerView
.KotlinJavaval userAgent = Util.getUserAgent(this, getString(R.string.app_name)) val dataSourceFactory = DefaultDataSourceFactory(this, userAgent) val mediaSourceFactory = DefaultMediaSourceFactory(dataSourceFactory) .setAdsLoaderProvider { yandexAdsLoader } .setAdViewProvider(playerView)
final String userAgent = Util.getUserAgent(this, getString(R.string.app_name)); final DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, userAgent); final DefaultMediaSourceFactory mediaSourceFactory = new DefaultMediaSourceFactory(dataSourceFactory); mediaSourceFactory.setAdsLoaderProvider(mYandexAdsLoader); mediaSourceFactory.setAdViewProvider(mBinding.playerView);
-
Создайте экземпляр
ExoPlayer
, установите в него созданныеmediaSourceFactory
. -
Установите созданный экземпляр
ExoPlayer
вPlayerView
иYandexAdsLoader
.KotlinJavaval player = SimpleExoPlayer.Builder(this) .setMediaSourceFactory(mediaSourceFactory).build() playerView.player = player yandexAdsLoader.setPlayer(player)
final SimpleExoPlayer player = new SimpleExoPlayer.Builder(this) .setMediaSourceFactory(mediaSourceFactory) .build(); mPlayerView.setPlayer(player); mYandexAdsLoader.setPlayer(player);
-
Создайте экземпляр
MediaItem
, установите в него ссылку на видео для воспроизведения иYandexAdsLoader.AD_TAG_URI
.KotlinJavaval contentVideoUrl = getString(R.string.content_url_for_instream_ad) val mediaItem = MediaItem.Builder() .setUri(contentVideoUrl) .setAdTagUri(YandexAdsLoader.AD_TAG_URI).build()
final String contentVideoUrl = getString(R.string.content_url_for_instream_ad); final MediaItem mediaItem = new MediaItem.Builder() .setUri(contentVideoUrl) .setAdTagUri(YandexAdsLoader.AD_TAG_URI) .build();
-
Запустите проигрывание видео с созданным экземпляром
MediaItem
.KotlinJavaplayer.apply { setMediaItem(mediaItem) prepare() playWhenReady = true }
mPlayer.setMediaItem(mediaItem); mPlayer.prepare(); mPlayer.setPlayWhenReady(true);