Вернуться к пропущенной рекламной паузе

Выберите платформу: HTML5 Android iOS tvOS Roku

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

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

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

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

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

Вот как реализовать Snappack с использованием IMA DAI SDK, как показано в нашем расширенном примере .

Не допускайте, чтобы поиск оставлял рекламную паузу непросмотренной

Проверьте, не запустил ли пользователь перемотку, которая прошла мимо непросмотренной рекламной паузы, и если да, верните его к рекламной паузе. В примере Roku Advanced для перемотки используются нажатия кнопок пульта дистанционного управления — каждое нажатие кнопки «Вперёд» перемещает пользователя вперёд по ленте на заданное количество секунд. Тот же метод, который обрабатывает этот переход, также проверяет, переместился ли пользователь после рекламной паузы или в неё, и если да, возвращает пользователя к её началу:

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 проверьте, была ли предыдущая рекламная пауза воспроизведена в результате снэпбэка. Если да, верните пользователя в то место, куда он пытался перейти изначально (при условии, что это не середина только что воспроизведенной рекламной паузы):

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