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:
- Sprawdź, czy użytkownik przeprowadził przewijanie, które przeskoczyło poza nieobejrzaną przerwę na reklamę. Jeśli tak, wróć do przerwy na reklamę.
- 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;
}