Издатели видеоконтента могут запретить пользователям перематывать рекламу в середине видео. Если пользователь перемотал рекламную паузу, вы можете вернуть его к ее началу, а после показа рекламы возобновить просмотр с нужного момента времени. Эта функция называется "возврат".
Пример показан на диаграмме ниже. Пользователь смотрит видео и решает перемотать его с 5-й минуты на 15-ю. Однако на 10-й минуте есть рекламная пауза, которую зрители должны посмотреть, прежде чем продолжить просмотр контента.

Чтобы показать эту рекламную паузу, выполните следующие действия:
- Проверьте, не пропустил ли пользователь рекламную паузу при перемотке. Если да, верните его к началу этой паузы.
- После завершения рекламной паузы возобновите просмотр с нужного момента времени.
На диаграмме это выглядит так:

Ниже описано, как реализовать этот рабочий процесс в IMA DAI SDK, как это сделано в AdvancedExample.
Как запретить пользователям пропускать рекламные паузы
Проверьте, не пропустил ли пользователь рекламную паузу. Если да, верните его к ней.
В Android SDK для обнаружения перемотки используется объект PlayerControl.
Когда пользователь перематывает видео, активируйте метод onSeek() объекта SampleHlsVideoPlayerCallback, реализованного с помощью SampleAdsWrapper.
Этот метод (представлен ниже) проверяет временную точку до времени перемотки пользователя. Если она не была воспроизведена, перейдите к началу рекламной паузы вместо выбранной пользователем точки. Сохраните выбранную точку в snapBackTime.
@Override
public void onSeek(int timeMillis) {
double timeToSeek = timeMillis;
if (streamManager != null) {
CuePoint cuePoint =
streamManager.getPreviousCuePointForStreamTime(timeMillis / 1000);
if (cuePoint != null && !cuePoint.isPlayed()) {
snapBackTime = timeToSeek / 1000.0; // Update snapback time.
// Missed cue point, so snap back to the beginning of cue point.
timeToSeek = cuePoint.getStartTime() * 1000;
videoPlayer.seek(Math.round(timeToSeek));
videoPlayer.setCanSeek(false);
return;
}
}
videoPlayer.seek(Math.round(timeToSeek));
}
Вернуть пользователя к исходной позиции
Теперь, когда вы получаете событие onAdBreakEnded, проверьте, задано ли значение snapBackTime. Если да, перенаправьте пользователя к этой точке в трансляции, поскольку рекламная пауза, которую он только что посмотрел, была результатом возврата:
@Override
public void onAdBreakEnded() {
// Re-enable player controls.
videoPlayer.setCanSeek(true);
videoPlayer.enableControls(true);
if (snapBackTime > 0) {
videoPlayer.seek(Math.round(snapBackTime * 1000));
}
snapBackTime = 0;
}