Snapback

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:

  1. Sprawdź, czy użytkownik wykonał wyszukiwanie, które przekroczyło nieobejrzaną przerwę na reklamę, a jeśli tak, przywróć mu przerwę na reklamę.
  2. 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;
  }
}