Jako wydawca filmów możesz chcieć zapobiec wyświetlaniu reklam w trakcie filmu. Gdy użytkownik przechodzi do wyników wyszukiwania poza przerwą na reklamę, możesz cofnąć się do początku przerwy na reklamę i wrócić do miejsca, w którym znajdował się wyszukiwane hasło po zakończeniu przerwy na reklamę. Funkcja ta nosi nazwę „snapback”.
Przykład znajduje się na diagramie poniżej. Widz ogląda film i postanawia przewinąć od znacznika 5 minut do 15 minut. Po 10 minutach filmu pojawia się przerwa na reklamę, którą użytkownik chce obejrzeć, zanim będzie mógł obejrzeć kolejną:
Aby wyświetlać tę przerwę na reklamę, wykonaj te czynności:
- Sprawdź, czy użytkownik uruchomił wyszukiwanie, które przekroczyło nieobejrzaną przerwę na reklamę, a jeśli tak, wróć do przerwy na reklamę.
- Po zakończeniu przerwy na reklamę wróć do pierwotnego wyszukiwania.
W formie diagramu wygląda to tak:
Oto jak zaimplementować snapack za pomocą pakietu IMA DAI SDK, jak pokazano w przykładzie zaawansowanym.
Zapobieganie wyświetlaniu przerwy na reklamę przez wyszukiwanie
Sprawdź, czy użytkownik uruchomił wyszukiwanie, które przekroczyło nieobejrzaną przerwę na reklamę, a jeśli tak, przywróć mu przerwę na reklamę. Zaawansowany przykład Roku korzysta z funkcji przewijania za pomocą zdalnego naciśnięcia przycisku – za każdym razem, gdy użytkownik naciśnie przycisk do przodu, przeskoczy w strumieniu do przodu o ustaloną liczbę sekund. Ta sama metoda, która obsługuje ten skok, sprawdza też, czy przejście przechodzi w przerwę na reklamę lub czy nie. Jeśli tak, odsyła użytkownika na początek przerwy na reklamę:
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żytkownika do pierwotnego wyszukiwania.
W module obsługi adBreakEnded
sprawdź, czy poprzednia przerwa na reklamę została odtworzona w wyniku cofnięcia. Jeśli tak, przywróć użytkownika do miejsca, w którym szukał reklamy (o ile nie był to środek przerwy na reklamę, która właśnie została wyświetlona):
player.adBreakEnded = Function(adBreakInfo as Object)
If m.isSnapback
m.seek(m.timeAfterSnapback * 1000)
m.isSnapback = False
End If
End Function