Как издатель видео, вы, возможно, захотите, чтобы ваши зрители не просматривали вашу рекламу в середине ролика. Когда пользователь выполняет поиск после рекламной паузы, вы можете вернуть его к началу рекламной паузы, а затем вернуть его в место поиска после завершения рекламной паузы. Эта функция называется «мгновенный возврат».
В качестве примера смотрите диаграмму ниже. Ваш зритель смотрит видео и решает перейти от 5-минутной отметки к 15-минутной отметке. Однако на 10-минутной отметке есть рекламная пауза, которую вы хотите, чтобы они посмотрели, прежде чем они смогут просмотреть контент после нее:
Чтобы показать эту рекламную паузу, выполните следующие действия:
- Проверьте, выполнил ли пользователь поиск, который перешел за непросмотренную рекламную паузу, и если да, верните его обратно к рекламной паузе.
- После завершения рекламной паузы верните их в исходное положение.
В виде диаграммы это выглядит так:
Вот как реализовать Snapack с помощью IMA DAI SDK, как показано в нашем расширенном примере .
Запретить поиску оставлять рекламную паузу непросмотренной
Проверьте, выполнил ли пользователь поиск после непросмотренной рекламной паузы, и если да, верните его к рекламной паузе. Расширенный образец Roku основан на удаленных нажатиях кнопок для поиска пользователем — каждый раз, когда пользователь нажимает кнопку «Вперед», он перескакивает вперед в потоке на заданное количество секунд. Тот же метод, который обрабатывает этот переход, также проверяет, проходит ли переход мимо рекламной паузы или в рекламную паузу, и если да, то вместо этого отправляет пользователя к началу этой рекламной паузы:
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
Верните пользователя к исходному поиску
В обработчике adBreakEnded
проверьте, воспроизводилась ли предыдущая рекламная пауза в результате Snapback. Если да, верните пользователя в то место, которое он изначально пытался найти (при условии, что это не была середина только что воспроизведенной рекламной паузы):
player.adBreakEnded = Function(adBreakInfo as Object)
If m.isSnapback
m.seek(m.timeAfterSnapback * 1000)
m.isSnapback = False
End If
End Function