基本集成 (ExoPlayer AdsLoader API)

YandexAdsLoader 是一个简化的 API,用于使用 ExoPlayer 集成视频插播广告。YandexAdsLoader 支持播放前贴片、中贴片和后贴片广告插播。

这种类型的集成适合不需要高级视频插播广告 API 功能的应用程序。

启用使用 Gradle

将以下依赖项添加到应用程序级别的 build.gradle 文件中:

dependencies {
    ...
    implementation 'com.yandex.android:mobileads:7.5.0'
    implementation 'com.google.android.exoplayer:exoplayer-core:2.18.1'
}

呈现广告

  1. 将 com.google.android.exoplayer2.ui.PlayerView 添加到应用布局。

    <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.Builder 类为 instreamAdRequestConfiguration 请求创建配置。将合作伙伴界面的 Page_ID 作为请求参数传递

  3. 创建 YandexAdsLoader 类的实例以投放和上传视频插播广告。

  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 实例添加到 PlayerViewYandexAdsLoader 中。

    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);