Snapback

Jako wydawca wideo możesz uniemożliwić widzom przeszukując reklamy w trakcie filmu. Gdy użytkownik przegląda przerwę na reklamę, możesz wrócić do początku przerwy na reklamę, do miejsca, w którym chcesz przewinąć, po zakończeniu przerwy na reklamę. Ten jest nazywany „przyciąganiem”.

Oto przykład: Widz ogląda film, i postanawia przejść od 5-minutowego filmu do piętnastego. Jednak po 10 minucie reklamy następuje przerwa na reklamę, aby zapoznać się z treścią, zanim obejrzą treść po filmie:

Aby wyświetlić tę przerwę na reklamę, wykonaj te czynności:

  1. Sprawdź, czy użytkownik przeprowadził przewijanie, które przeskoczyło poza nieobejrzaną przerwę na reklamę. Jeśli tak, wróć do przerwy na reklamę.
  2. Po zakończeniu przerwy na reklamę wróć do pierwotnego położenia reklamy.

W postaci diagramu wygląda to tak:

Oto jak wdrożyć ten proces w pakiecie IMA DAI SDK, tak jak w przypadku AdvancedExample

Zapobiegaj pozostawaniu przez przewijanie nieobejrzanej przerwy na reklamę

sprawdzić, czy użytkownik przeprowadził przewijanie, które nie minęło od nieobejrzanej przerwy na reklamę; Jeśli tak, wróć do przerwy na reklamę. W pakiecie SDK Androida do wykrywania wyszukiwania użyj obiektu PlayerControl. Gdy użytkownik rozpocznie wyszukiwanie, wywołaj metodę onSeek() funkcji Pole SampleHlsVideoPlayerCallback zostało wdrożone przez użytkownika SampleAdsWrapper. Ta metoda (poniżej) sprawdza punkt wstawienia reklamy przed znajdź czas. Jeśli nie jest odtworzony, przewiń do początku przerwy na reklamę. zamiast początkowego docelowego punktu przewijania i zapisać wybrane przesunięcie. punkt w komórce snapBackTime.

@Override
public void onSeek(int timeMillis) {
  double timeToSeek = timeMillis;
  if (streamManager != null) {
    CuePoint cuePoint =
        streamManager.getPreviousCuePointForStreamTime(timeMillis / 1000);
    if (cuePoint != null && !cuePoint.isPlayed()) {
      snapBackTime = timeToSeek / 1000.0; // Update snapback time.
      // Missed cue point, so snap back to the beginning of cue point.
      timeToSeek = cuePoint.getStartTime() * 1000;
      videoPlayer.seek(Math.round(timeToSeek));
      videoPlayer.setCanSeek(false);
      return;
    }
  }
  videoPlayer.seek(Math.round(timeToSeek));
}

Przywróć użytkownikowi pierwotne wyszukiwanie

Teraz gdy otrzymasz zdarzenie onAdBreakEnded, sprawdź, czy snapBackTime jest ustawiony. Jeśli tak, zabierz użytkownika do tego momentu transmisji, ponieważ reklama film, który właśnie obejrzeli, to efekt przyspieszenia:

@Override
public void onAdBreakEnded() {
  // Re-enable player controls.
  videoPlayer.setCanSeek(true);
  videoPlayer.enableControls(true);
  if (snapBackTime > 0) {
    videoPlayer.seek(Math.round(snapBackTime * 1000));
  }
  snapBackTime = 0;
}