Snapback

Как издатель видео, вы, возможно, захотите, чтобы ваши зрители не просматривали вашу рекламу в середине ролика. Когда пользователь выполняет поиск после рекламной паузы, вы можете вернуть его к началу рекламной паузы, а затем вернуть его в место поиска после завершения рекламной паузы. Эта функция называется «мгновенный возврат».

В качестве примера смотрите диаграмму ниже. Ваш зритель смотрит видео и решает перейти от 5-минутной отметки к 15-минутной отметке. Однако на 10-минутной отметке есть рекламная пауза, которую вы хотите, чтобы они посмотрели, прежде чем они смогут просмотреть контент после нее:

Чтобы показать эту рекламную паузу, выполните следующие действия:

  1. Проверьте, выполнил ли пользователь поиск, который перешел за непросмотренную рекламную паузу, и если да, верните его обратно к рекламной паузе.
  2. После завершения рекламной паузы верните их в исходное положение.

В виде диаграммы это выглядит так:

Вот как реализовать 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