回溯

影片發布商可能會想防止觀眾看到片中廣告。當使用者跳轉過去的廣告插播時,您可以將他們帶回廣告插播的開始處,然後在廣告插播結束後再讓他們回到搜尋位置。此功能稱為「snapback」。

請參考下圖範例。觀眾正在觀看影片,並決定從 5 分鐘到 15 分鐘的位置跳轉。但是,有一個在 10 分鐘標記的廣告插播時間點,就是您想讓他們在結束後觀看內容:

如要顯示這個廣告插播時間點,請按照下列步驟操作:

  1. 檢查使用者是否跳轉至未觀看的廣告插播時間點,如果是,就會讓他們回到廣告插播時間點。
  2. 廣告插播結束後,可以將觀眾回復為原本的跳轉。

在圖表中,如下所示:

以下說明如何使用 IMA DAI SDK 導入貼齊功能,如進階範例所示。

避免跳轉至未觀看的廣告插播時間點

檢查使用者是否已執行某個搜尋點超過未觀看的廣告插播時間點,如果是,就會把他們帶回廣告插播時間點。Roku 進階範例必須透過遠端按鈕讓使用者跳轉,因此每當使用者按下快轉按鈕時,都會以一定的秒數向前推進串流。與處理此跳躍動作的相同方法也會檢查跳躍動作是否超過或進入廣告插播時間點,如果會,就會改為將使用者傳送到該廣告插播的開頭:

Function handleFastForward(player as Object, streamManager as Object, updatedTime As Integer)
  previousAd = streamManager.getPreviousCuePoint(updatedTime)
  If previousAd = Invalid or previousAd.hasPlayed
    player.seek(updatedTime * 1000)
  Else If previousAd.start > player.currentTime
    player.isSnapback = True
    player.timeAfterSnapback = updatedTime
    player.seek(previousAd.start * 1000 + 1000)
  End If
End Function

將使用者移回原始搜尋範圍

adBreakEnded 處理常式中,檢查先前的廣告插播是否因回溯結果而播放。如果是的話,請將使用者回訪回他們想嘗試搜尋的位置 (只要該時間點沒有剛播放的廣告時段中間):

player.adBreakEnded = Function(adBreakInfo as Object)
  If m.isSnapback
    m.seek(m.timeAfterSnapback * 1000)
    m.isSnapback = False
  End If
End Function