IMA Android SDK 支持完全自动化的广告播放列表。当您投放广告时,此功能会将广告插播时间点插入 Google Ad Manager 中指定的内容。它还大大简化了支持广告插播时间点所需的视频播放器代码,包括前贴片广告、中贴片广告和后贴片广告。
- 在 Ad Manager 中投放广告时,可以指定各种广告规则,例如“始终在内容开始时播放广告插播时间点”或“每 30 分钟在内容中播放 1 分钟的广告插播时间点”。
- 请求广告时,广告服务器可以返回一个广告播放列表。SDK 会处理播放列表,并自动安排已指定的广告插播时间点。
- 由于 Android 对广告播放和内容播放使用相同的视频播放器,因此如果您打算实现广告规则,则必须在广告开始时保存内容的进度条指针位置,然后在广告结束时跳转至该位置。
请务必在视频播放器中实现
VideoAdPlayer
接口。这样可确保在 Ad Manager 中指定的时间自动插入广告插播时间点。private boolean playingContent = true; private int contentPosition = -1; private List
callbacks = new ArrayList (); @Override public void addCallback(VideoAdPlayerCallback callback) { callbacks.add(callback); } @Override public void removeCallback(VideoAdPlayerCallback callback) { callbacks.remove(callback); } public void loadContent() playingContent = true; load(CONTENT_URL); } @Override public void loadAd(String mediaUrl) { playingContent = false; load(mediaUrl); } public void pauseContent() { savePosition(); pause(); } @Override public void pauseAd() { pause(); } private void pause() { myVideoView.pause(); for (VideoAdPlayerCallback callback : callbacks) { callback.onPause(); } } public void resumeContent() { loadContent(); if (contentPosition > 0) { restorePosition(); } resume(); } @Override public void resumeAd() { resume(); } private void resume() { myVideoView.start(); for (VideoAdPlayerCallback callback : callbacks) { callback.onResume(); } } public void savePosition() { contentPosition = myVideoView.getCurrentPosition(); } public void restorePosition() { myVideoView.seekTo(contentPosition); } CONTENT_PAUSE_REQUESTED
和CONTENT_RESUME_REQUESTED
事件用于在播放广告插播时间点时暂停和恢复内容。如需详细了解这些事件,请参阅相关的 API 文档。
注意:当内容播放完毕或用户停止播放时,请务必调用 AdsLoader.contentComplete,以便向 SDK 发出内容已完成播放的信号。然后,SDK 会播放后贴片广告插播时间点(如果已安排)。播放完所有广告插播时间点后,系统会引发 ALL_ADS_COMPLETED
事件。另请注意,内容跟踪会在调用 init()
时开始,您应始终先调用 init()
,然后再播放内容。