本指南說明如何在對隨選影片 (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;
}
}
}