Powrót do pominiętej przerwy na reklamę

Wybierz platformę: HTML5 Android iOS tvOS Roku

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 decyduje się 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 reklamę, wykonaj te czynności:

  1. Sprawdź, czy użytkownik przewinął nieobejrzaną przerwę na reklamę, i w takim przypadku cofnij odtwarzanie do tej przerwy.
  2. Po zakończeniu przerwy na reklamę odtwarzanie jest wznawiane od miejsca przewinięcia.

W formie diagramu wygląda to tak:

Oto jak wdrożyć snapbacka za pomocą pakietu IMA DAI SDK, co pokazujemy w naszym przykładzie zaawansowanym.

Zapobieganie pomijaniu przerw na reklamę

Sprawdź, czy użytkownik przewinął film poza nieobejrzaną przerwę na reklamy, i w takim przypadku 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 pierwotną pozycję

W module obsługi adBreakEnded sprawdź, czy poprzednia przerwa na reklamę została odtworzona w wyniku cofnięcia do przerwy na reklamę. Jeśli tak, przywróć użytkownikowi miejsce, do którego chciał przejść (o ile nie było to w środku 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