Jako wydawca filmów możesz chcieć uniemożliwić widzom przewijanie reklam w trakcie filmu. Gdy użytkownik przewinie przerwę na reklamę, możesz cofnąć odtwarzanie do początku tej przerwy, a następnie po jej zakończeniu wrócić do miejsca przewinięcia. Ta funkcja nazywa się „snapback”.
Przykład znajdziesz na diagramie poniżej. Widz ogląda film i postanawia przewinąć go z 5 minuty do 15 minuty. W 10 minucie filmu znajduje się jednak przerwa na reklamę, którą chcesz wyświetlić użytkownikom przed odtworzeniem dalszej części filmu:
Aby wyświetlić tę przerwę na reklamy, wykonaj te czynności:
- Sprawdź, czy użytkownik przewinął nieobejrzaną przerwę na reklamę, a jeśli tak, cofnij go do tej przerwy.
- Po zakończeniu przerwy na reklamę odtwarzanie jest wznawiane od miejsca przewinięcia.
Na diagramie wygląda to tak:
Oto jak wdrożyć snapback przy użyciu pakietu IMA DAI SDK, co pokazujemy w naszym przykładzie zaawansowanym.
Zapobieganie pomijaniu przerw na reklamy
Sprawdź, czy użytkownik przewinął film poza nieobejrzaną przerwę na reklamę, a jeśli tak, cofnij go do tej przerwy. Zaawansowany przykład Roku opiera się na naciśnięciach przycisków pilota, które umożliwiają użytkownikowi przewijanie. Za każdym razem, gdy użytkownik naciśnie przycisk przewijania do przodu, przeskakuje w strumieniu o określoną liczbę sekund. Ta sama metoda, która obsługuje to przeskoczenie, sprawdza też, czy przeskoczenie przenosi użytkownika do przerwy na reklamę lub poza nią. Jeśli tak, przenosi użytkownika na początek tej przerwy:
Function handleFastForward(player as Object, streamManager as Object, updatedTime As Integer)
previousAd = streamManager.getPreviousCuePoint(updatedTime)
If previousAd = Invalid or previousAd.hasPlayed
player.seek(updatedTime * 1000)
Else If previousAd.start > player.currentTime
player.isSnapback = True
player.timeAfterSnapback = updatedTime
player.seek(previousAd.start * 1000 + 1000)
End If
End Function
Przywróć użytkownikowi pierwotne miejsce odtwarzania
W obsłudze adBreakEnded
sprawdź, czy poprzednia przerwa na reklamę została odtworzona w wyniku powrotu do poprzedniego stanu. Jeśli tak, przywróć użytkownikowi miejsce, do którego chciał przejść (o ile nie była to środek właśnie odtworzonej przerwy na reklamę):
player.adBreakEnded = Function(adBreakInfo as Object)
If m.isSnapback
m.seek(m.timeAfterSnapback * 1000)
m.isSnapback = False
End If
End Function