Jako wydawca filmów możesz uniemożliwić widzom przewijanie reklam w trakcie filmu. Gdy użytkownik przewinie przerwę na reklamę, możesz cofnąć go do początku tej przerwy, a następnie po jej zakończeniu przywrócić do miejsca przewinięcia. Ta funkcja nazywa się „cofnięcie do przerwy na reklamę”.
Przykład znajdziesz na diagramie poniżej. Widz ogląda film i postanawia przewinąć go z 5. minuty do 15. minuty. W 10. minucie jest jednak przerwa na reklamę, którą chcesz, aby obejrzał, zanim będzie mógł oglądać dalszą część filmu:

Aby wyświetlić tę przerwę na reklamę, wykonaj te czynności:
- Sprawdź, czy użytkownik przewinął film, pomijając nieobejrzaną przerwę na reklamę. Jeśli tak, cofnij go do tej przerwy.
- Po zakończeniu przerwy na reklamę przywróć użytkownika do miejsca, w którym przewinął film.
Na diagramie wygląda to tak:

Oto jak zaimplementować cofnięcie do przerwy na reklamę za pomocą pakietu IMA DAI SDK, co pokazano w przykładzie zaawansowanym.
Uniemożliwianie przewijania filmu bez obejrzenia przerwy na reklamę
Sprawdź, czy użytkownik przewinął film, pomijając nieobejrzaną przerwę na reklamę. Jeśli tak, cofnij go do tej przerwy.
W pakiecie HTML5 SDK ustaw detektor zdarzeń dla zdarzenia seeked odtwarzacza treści, aby wywołać onSeekEnd(). Ta metoda (przedstawiona poniżej) sprawdza punkt wstawienia przed czasem przewinięcia przez użytkownika. Jeśli nie został odtworzony, przewiń do początku przerwy na reklamę zamiast do początkowego punktu przewinięcia i zapisz ten punkt w 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;
}
Przywracanie użytkownika do miejsca, w którym przewinął film
Gdy otrzymasz zdarzenie AD_BREAK_ENDED, sprawdź, czy ustawiono snapForwardTime. Jeśli tak, przenieś użytkownika do tego punktu w strumieniu, ponieważ przerwa na reklamę, którą właśnie obejrzał, była wynikiem cofnięcia do przerwy na reklamę:
function onAdBreakEnded(e) {
videoElement.controls = true;
clickElement.style.display = 'none';
adUiDiv.style.display = 'none';
if (snapForwardTime && snapForwardTime > videoElement.currentTime) {
videoElement.currentTime = snapForwardTime;
snapForwardTime = null;
}
}