借助 IMA SDK,您可以轻松地将多媒体广告集成到网站和应用中。IMA SDK 可以从任何 符合 VAST 标准的广告服务器请求广告,并在您的应用中管理广告播放。借助 IMA DAI SDK,应用可以针对广告和内容视频(VOD 或直播内容)发出视频流请求。然后,SDK 会返回一个组合视频流,这样您就不必在应用内管理广告和内容视频之间的切换。
选择您感兴趣的 DAI 解决方案
全方位服务 DAI
本指南演示了如何将 IMA DAI SDK 集成到简单的视频播放器应用中。如果您想查看或跟随完成的示例集成,请从 GitHub 下载 BasicExample。
IMA DAI 概览
实现 IMA DAI 涉及四个主要 SDK 组件,如本指南所示:
StreamDisplayContainer
: 位于视频播放元素顶部并包含广告界面元素的容器对象。AdsLoader
:用于请求流并处理由流请求响应对象触发的事件的对象。 您应该只实例化一个广告加载程序,该加载程序可在整个应用生命周期内重复使用。StreamRequest
: 用于定义流请求的对象。视频流请求可以是视频点播请求,也可以是直播请求。直播请求会指定素材资源键,而 VOD 请求会指定 CMS ID 和视频 ID。这两种请求类型都可以选择性地包含访问指定视频流所需的 API 密钥,以及 Google Ad Manager 网络代码,以便 IMA SDK 按照 Google Ad Manager 设置中的指定方式处理广告标识符。StreamManager
:用于处理动态广告插播流以及与 DAI 后端互动的对象。流管理器还会处理跟踪 ping,并将流和广告事件转发给发布商。
前提条件
- Android Studio
- 用于 SDK 集成的示例视频播放器应用
下载并运行示例视频播放器应用
此示例应用提供了一个可播放 HLS 视频的视频播放器。您可以使用此示例作为集成 IMA DAI SDK 的 DAI 功能的起点。
下载示例视频播放器应用并将其解压缩。
启动 Android Studio,然后选择 Open an existing Android Studio project;如果 Android Studio 已在运行,请依次选择 File > New > Import Project。然后选择
SampleVideoPlayer/build.gradle
。依次选择 Tools > Android > Sync Project with Gradle Files,运行 Gradle 同步。
确保播放器应用使用 Run > Run 'app' 在实体 Android 设备或 Android 虚拟设备上编译并运行。视频流在播放前需要几秒钟的加载时间,这是正常现象。
检查示例视频播放器
示例视频播放器尚不包含任何 IMA DAI SDK 集成代码。 示例应用包含两个主要部分:
samplevideoplayer/SampleVideoPlayer.java
:基于 ExoPlayer 的 HLS 播放器,可作为 IMA DAI 集成的基础。videoplayerapp/MyActivity.java
:此 activity 会创建视频播放器,并向其传递Context
和media3.ui.PlayerView
。
将 IMA DAI SDK 添加到播放器应用
您还必须添加对 IMA DAI SDK 的引用。在 Android Studio 中,将以下内容添加到位于 app/build.gradle 的应用级 build.gradle 文件中。IMA SDK 需要启用库脱糖,您必须通过在 build.gradle 文件中设置 coreLibraryDesugaringEnabled true
并添加 coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
作为依赖项来启用库脱糖。如需了解详情,请参阅通过脱糖提供的满足 Nio 规格要求的 Java 11 及更高版本 API。
集成 IMA DAI SDK
在
videoplayerapp
软件包(位于app/java/com.google.ads.interactivemedia.v3.samples/videoplayerapp/
中)中创建一个名为SampleAdsWrapper
的新类,以封装现有的SampleVideoPlayer
并添加实现 IMA DAI 的逻辑。为此,您必须先创建用于请求 DAI 视频流的AdsLoader
。此代码段包含 HLS 和 DASH、直播和 VOD 视频流的示例参数。如需设置正在播放的直播,请更新
CONTENT_TYPE
变量。创建
createSampleVideoPlayerCallback()
辅助方法来处理创建扩展VideoStreamPlayer.VideoStreamPlayerCallback
的SampleVideoPlayerCallback
接口实例。若要使用 DAI,播放器必须将直播的 ID3 事件传递给 IMA DAI SDK。
callback.onUserTextReceived()
方法可实现此目的,如以下示例代码所示。添加
buildStreamRequest()
方法以创建SteamRequest
。此方法会根据您设置CONTENT_TYPE
变量的方式在不同的数据流之间切换。本指南中使用的默认视频流是 IMA 的示例 VOD HLS 视频流。您还需要一个
VideoStreamPlayer
来播放音频流,因此请添加一个createVideoStreamPlayer()
方法,该方法会创建一个实现VideoStreamPlayer
的匿名类。实现所需的监听器并添加对错误处理的支持。
请注意
AdErrorListener
实现,因为如果广告播放失败,它会调用后备网址。由于内容和广告位于一个视频流中,因此如果 DAI 视频流遇到错误,您必须准备好调用后备视频流。添加用于记录日志的代码。
修改
videoplayerapp
中的MyActivity
以实例化并调用SampleAdsWrapper
。此外,还使用辅助方法调用ImaSdkFactory.initialize()
以创建ImaSdkSettings
实例。添加
getImaSdkSettings()
辅助方法以创建ImaSdkSettings
实例。修改 activity 的布局文件
activity_my.xml
,以添加用于记录的界面元素。
恭喜!您现在可以在 Android 应用中请求和展示视频广告了。如需微调您的实现,请参阅书签、Snapback 和 API 文档。
问题排查
如果您在播放视频广告时遇到问题,请尝试下载完整的 BasicExample。 如果该代码在 BasicExample 中可以正常运行,则可能是您的应用的 IMA 集成代码存在问题。
如果您仍遇到问题,请访问 IMA SDK 论坛。