自動化廣告播放清單

選取平台: HTML5 Android iOS tvOS

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_REQUESTEDCONTENT_RESUME_REQUESTED 事件暫停及繼續播放內容。如要進一步瞭解這些事件,請參閱相關的 API 說明文件

注意:內容播放完畢或使用者停止播放時,請務必呼叫 AdsLoader.contentComplete,向 SDK 發出內容播放完畢的信號。如果已排定片尾廣告插播時間,SDK 就會播放片尾廣告插播。所有廣告插播都播放完畢時,系統會觸發 ALL_ADS_COMPLETED 事件。此外,請注意,內容追蹤會在呼叫 init() 時開始,且您應一律在播放內容前呼叫 init()