Jako wydawca filmów możesz chcieć uniemożliwić widzom oglądanie Twoich reklam w trakcie filmu. Gdy użytkownik przeszukuje miejsce poza przerwą na reklamę, możesz cofnąć tę przerwę na początek przerwy na reklamę, a potem wrócić do miejsca przeszukania po zakończeniu przerwy na reklamę. Ta funkcja nosi nazwę „snapback”.
Przykład znajduje się na poniższym diagramie. Widz ogląda film i postanawia przewinąć film od 5 do 15 minut. Po 10 minutach następuje przerwa na reklamę, którą widzowie muszą obejrzeć, zanim będą mogli obejrzeć kolejne treści:
Aby wyświetlać tę przerwę na reklamę, wykonaj te czynności:
- Sprawdź, czy użytkownik wykonał wyszukiwanie, które przekroczyło nieobejrzaną przerwę na reklamę, a jeśli tak, przywróć mu przerwę na reklamę.
- Po zakończeniu przerwy na reklamę wróć do pierwotnego wyszukiwania.
W formie diagramu wygląda to tak:
Oto jak wdrożyć ten przepływ pracy w pakiecie HTML5 IMA SDK w sposób podany w przykładzie zaawansowanym.
Zapobieganie pozostawianiu przerwy na reklamę niewykorzystaną przez przewijanie
Sprawdź, czy użytkownik wykonał wyszukiwanie, które przekroczyło nieobejrzaną przerwę na reklamę, a jeśli tak, przywróć mu przerwę na reklamę.
W pakiecie SDK HTML5 skonfiguruj odbiornik w zdarzeniu seeked
odtwarzacza treści, aby aktywować onSeekEnd()
. Ta metoda (przedstawiona poniżej) sprawdza punkt wstawienia reklamy przed czasem wyszukiwania użytkownika. Jeśli reklama nie jest odtwarzana, przejdź do początku przerwy na reklamę zamiast do początkowego żądanego punktu przewijania i zapisz ten punkt wyszukiwania w polu 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;
}
Przywróć użytkownikowi pierwotne wyszukiwanie
Teraz po wywołaniu zdarzenia AD_BREAK_ENDED
sprawdź, czy jest ustawione snapForwardTime
. Jeśli tak, skieruj użytkownika do tego momentu, ponieważ przerwa na reklamę, którą oglądał, była wynikiem działania 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;
}
}