Закладки

В этом руководстве показано, как реализовать закладки с помощью IMA DAI SDK при использовании динамической вставки рекламы (DAI) для потоков видео по запросу (VOD). Это предполагает работающую реализацию IMA DAI, например, представленную в разделе «Начало работы» .

Что такое закладка?

Создание закладок — это возможность сохранить, а затем вернуться к определенной точке потока контента. Предположим, пользователь смотрит пять минут контента, выходит из видеопотока, а затем возвращается к нему. Создание закладок сохраняет позицию пользователя в потоке, поэтому поток может продолжиться с того места, где он остановился, обеспечивая удобство просмотра для зрителя.

Закладки DAI под капотом

Добавляя в закладки поток DAI, вы должны записать идентификатор потока и время, когда пользователь покидает видео. Когда пользователь вернется, повторно запросите поток и найдите сохраненное время. Поскольку каждый экземпляр запрошенного потока может иметь рекламные паузы разной продолжительности, просто сэкономить время потока не получится. Что вам действительно нужно, так это продолжить с того же времени .

Методы конвертации в помощь

IMA DAI SDK предоставляет пару методов для запроса времени контента для заданного времени потока и времени потока для заданного времени контента . Используя эти методы преобразования, вы можете сохранить время содержимого закладки, а затем искать соответствующее время потока в новом экземпляре потока. Вот подход, включая ссылку на пример приложения, демонстрирующий рабочую реализацию закладок.

Сохранение закладок

Сохраните закладку, когда действие приостановлено.

- (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];
  [self.contentPlayer pause];
  // Ignore this if you're presenting a modal view (e.g. in-app clickthrough).
  if ([self.navigationController.viewControllers indexOfObject:self] ==
      NSNotFound) {
    NSTimeInterval contentTime =
        [self.streamManager contentTimeForStreamTime:CMTimeGetSeconds(
            self.contentPlayer.currentTime)];
    self.video.savedTime = contentTime;
    ...
    }
  }
}

Загрузка закладок

Загрузите закладку при повторном запросе потока. Это часть реализации интерфейса VideoStreamPlayer .

- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
  ...
  case kIMAAdEvent_STREAM_LOADED: {
    if (self.video.savedTime > 0) {
      NSTimeInterval streamTime =
          [self.streamManager streamTimeForContentTime:self.video.savedTime];
      [self.IMAVideoDisplay.playerItem
          seekToTime:CMTimeMakeWithSeconds(streamTime, NSEC_PER_SEC)];
      self.video.savedTime = 0;
    }
  }
}

Пример приложения

Пример приложения