광고 스트림 북마크 저장 및 로드

플랫폼 선택: HTML5 Android iOS tvOS Roku

이 가이드에서는 주문형 동영상 (VOD) 스트림에 동적 광고 삽입 (DAI)을 사용할 때 IMA DAI SDK를 사용하여 북마크를 구현하는 방법을 보여줍니다. 여기서는 시작하기에 나온 것과 같은 IMA DAI 구현이 작동한다고 가정합니다.

북마크란 무엇인가요?

북마크는 콘텐츠 스트림의 특정 포인트를 저장한 다음 돌아가는 기능입니다. 사용자가 콘텐츠를 5분간 시청하고 동영상 스트림에서 나간 후 돌아온다고 가정하겠습니다. 북마크가 스트림 내 사용자의 위치를 저장하므로 스트림이 중단된 위치를 찾아내어 뷰어에 원활한 환경을 제공합니다.

DAI 북마크 내부 구조

DAI 스트림을 북마크할 때는 사용자가 동영상을 종료할 때 스트림 ID와 시간을 기록해야 합니다. 사용자가 돌아오면 스트림을 다시 요청하고 저장된 시간으로 이동합니다. 요청된 스트림의 각 인스턴스에는 지속 시간이 다른 광고 시청이 있을 수 있으므로 스트림 시간을 저장하는 것만으로는 작동하지 않습니다. 실제로 원하는 것은 동일한 콘텐츠 시간부터 계속하는 것입니다.

변환 메서드 사용

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;
    }
  }
}

샘플 앱

샘플 앱