影片發布商可能會想防止觀眾看到 越過片中廣告使用者跳轉超過廣告插播時間點時,您可以將他們帶回該廣告插播的開頭,然後在廣告插播結束後將其傳回搜尋位置。此功能稱為「回歸」。
請參考下圖範例。觀眾正在觀看影片,然後選擇從 5 分鐘的標記開始跳轉至 15 分鐘。然而,在 10 分鐘標記處出現一段廣告插播時間點,表示您希望使用者在看完內容前看完廣告:
如要顯示這個廣告插播時間點,請按照下列步驟操作:
- 檢查使用者執行的跳轉是否超過未觀看的廣告插播時間點。如果可以,請將使用者重新回到廣告插播時間點。
- 廣告插播結束後,請返回原本的跳轉。
以圖表形式呈現,如下所示:
在 HTML5 IMA SDK 中實作此工作流程的方式,如進階範例所示。
防止使用者在未觀看的廣告插播時間點暫停播放
檢查使用者執行的時間是否超過未觀看的廣告插播時間點,如果有的話,就可以回到廣告插播時間點。在 HTML5 SDK 中,在內容播放器的 seeked
事件上設定事件監聽器,以觸發 onSeekEnd()
。此方法 (如下所示) 會檢查使用者搜尋時間之前的提示點。如果未播放,請跳轉至該廣告插播時間點 (而不是其初始所需的搜尋點) 開始,然後將所需的跳轉點儲存在 snapForwardTime
中。
function onSeekEnd() {
if (isLiveStream) { return; }
if (isSnapback) {
isSnapback = false;
return;
}
var currentTime = videoElement.currentTime;
var previousCuePoint =
streamManager.previousCuePointForStreamTime(currentTime);
if (previousCuePoint && !previousCuePoint.played) {
isSnapback = true;
snapForwardTime = currentTime;
videoElement.currentTime = previousCuePoint.start;
}
引導使用者回到原本的搜尋點
現在當您收到 AD_BREAK_ENDED
事件時,請檢查是否已設定 snapForwardTime
。如果是的話,請將使用者引導至串流中的該時間點,因為他們剛看過的廣告插播就是回傳結果:
function onAdBreakEnded(e) {
videoElement.controls = true;
clickElement.style.display = 'none';
adUiDiv.style.display = 'none';
if (snapForwardTime && snapForwardTime > videoElement.currentTime) {
videoElement.currentTime = snapForwardTime;
snapForwardTime = null;
}
}