書籤

本指南說明如何在對隨選影片 (VOD) 串流使用動態廣告插播 (DAI) 時,使用 IMA DAI SDK 導入書籤。本文假設導入了有效的 IMA DAI 導入作業,例如開始使用一文中顯示的範例。

什麼是書籤?

書籤是指儲存內容串流中特定位置的功能,然後再返回。假設使用者觀看內容五分鐘後離開該影片串流,然後再返回其中。書籤功能會儲存使用者在串流中的位置,讓串流可以從上次中斷的地方繼續,讓觀眾享有流暢的體驗。

內建 DAI 書籤功能

將 DAI 串流加入書籤時,您必須在使用者離開影片時記錄串流 ID 和時間。當使用者回訪時,重新要求串流並跳轉至已儲存的時間。由於請求串流的每個執行個體都可包含不同時間長度的廣告插播,因此僅儲存串流時間是無法運作的。您要做的都是從相同的內容時間繼續。

轉換方法

IMA DAI SDK 提供一組方法,可針對特定串流時間串流時間提出內容時間您可以使用這些轉換方法儲存加入書籤的內容時間,然後在新的串流執行個體中搜尋對應的串流時間。做法如下,包括一個範例應用程式連結,當中顯示可正常運作的書籤實作。

正在儲存書籤

在活動暫停時儲存書籤。

- (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];
  [self.contentPlayer pause];
  // Ignore this if you're presenting a modal view (e.g. in-app clickthrough).
  if ([self.navigationController.viewControllers indexOfObject:self] ==
      NSNotFound) {
    NSTimeInterval contentTime =
        [self.streamManager contentTimeForStreamTime:CMTimeGetSeconds(
            self.contentPlayer.currentTime)];
    self.video.savedTime = contentTime;
    ...
    }
  }
}

正在載入書籤

重新要求串流時,請載入書籤。是實作 VideoStreamPlayer 介面的一部分。

- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
  ...
  case kIMAAdEvent_STREAM_LOADED: {
    if (self.video.savedTime > 0) {
      NSTimeInterval streamTime =
          [self.streamManager streamTimeForContentTime:self.video.savedTime];
      [self.IMAVideoDisplay.playerItem
          seekToTime:CMTimeMakeWithSeconds(streamTime, NSEC_PER_SEC)];
      self.video.savedTime = 0;
    }
  }
}

範例應用程式

範例應用程式