回溯

影片發布商可能會想防止觀眾看到 越過片中廣告使用者跳轉超過廣告插播時間點時,您可以將他們帶回該廣告插播的開頭,然後在廣告插播結束後將其傳回搜尋位置。此功能稱為「回歸」。

請參考下圖範例。觀眾正在觀看影片,然後選擇從 5 分鐘的標記開始跳轉至 15 分鐘。然而,在 10 分鐘標記處出現一段廣告插播時間點,表示您希望使用者在看完內容前看完廣告:

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

  1. 檢查使用者執行的跳轉是否超過未觀看的廣告插播時間點。如果可以,請將使用者重新回到廣告插播時間點。
  2. 廣告插播結束後,請返回原本的跳轉。

以圖表形式呈現,如下所示:

請參考進階範例,瞭解如何在 Roku IMA 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