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 Roku IMA SDK w ten sposób, jak pokazano 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ę. Zaawansowany przykład z usługi Roku polega na naciśnięciu przycisku zdalnego w celu wyszukania użytkownika – za każdym razem, gdy użytkownik naciśnie przycisk do przodu, przeskoczy do przodu w strumieniu o określoną liczbę sekund. Ta sama metoda, która obsługuje ten skok, sprawdza też, czy przejście przechodzi poza przerwę na reklamę czy w trakcie jej trwania, a jeśli tak, odsyła użytkownika do początku 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żytkownikowi pierwotne wyszukiwanie

W module obsługi adBreakEnded sprawdź, czy poprzednia przerwa na reklamę została odtworzona w wyniku migawki. 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 odtworzona):

player.adBreakEnded = Function(adBreakInfo as Object)
  If m.isSnapback
    m.seek(m.timeAfterSnapback * 1000)
    m.isSnapback = False
  End If
End Function