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()
。