Базовая интеграция (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'
}

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

  1. Добавьте в layout приложения PlayerView:

    <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> 
    
  2. Создайте конфигурацию запроса instreamAdRequestConfiguration с помощью класса InstreamAdRequestConfiguration.Builder. В качестве параметров запроса передайте идентификатор страницы (Page_ID) из Партнерского интерфейса.

    Примечание

    Для использования YandexAdsLoader с Media3 стоит импортировать его из пакета com.yandex.mobile.ads.instream.media3, для использования с ExoPlayer — из пакета com.yandex.mobile.ads.instream.exoplayer.

  3. Создайте экземпляр класса YandexAdsLoader для показа и загрузки InStream-рекламы.

  4. Создайте экземпляр класса DefaultMediaSourceFactory, установите в него созданный экземпляр YandexAdsLoader и PlayerView.

    val 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);
    
  5. Создайте экземпляр ExoPlayer, установите в него созданные mediaSourceFactory.

  6. Установите созданный экземпляр ExoPlayer в PlayerView и YandexAdsLoader.

    val 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);
    
  7. Создайте экземпляр MediaItem, установите в него ссылку на видео для воспроизведения и YandexAdsLoader.AD_TAG_URI.

    val 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();
    
  8. Запустите проигрывание видео с созданным экземпляром MediaItem.

    player.apply {
        setMediaItem(mediaItem)
        prepare()
        playWhenReady = true
    }
    
    mPlayer.setMediaItem(mediaItem);
    mPlayer.prepare();
    mPlayer.setPlayWhenReady(true);