Dấu trang

Hướng dẫn này trình bày cách triển khai dấu trang bằng cách sử dụng SDK IMA DAI khi sử dụng tính năng Chèn quảng cáo động (DAI) cho luồng video theo yêu cầu (VOD). Điều này giả định một phương thức triển khai IMA DAI đang hoạt động, chẳng hạn như quy trình được trình bày trong Bắt đầu.

Đánh dấu trang là gì?

Đánh dấu trang là khả năng lưu rồi quay lại một điểm cụ thể trong luồng nội dung. Giả sử một người dùng xem 5 phút nội dung, rời khỏi luồng video rồi quay lại luồng đó. Đánh dấu trang sẽ lưu vị trí của người dùng trong luồng để luồng có thể tiếp tục từ vị trí còn lại, mang lại trải nghiệm liền mạch cho người xem.

Tìm hiểu sâu về tính năng đánh dấu trang của DAI

Khi đánh dấu trang một luồng DAI, bạn phải ghi lại thời gian và id luồng khi người dùng rời khỏi video. Khi người dùng quay lại, hãy yêu cầu lại phát trực tuyến và tua đến thời gian đã tiết kiệm được. Vì mỗi lần xuất hiện của yêu cầu luồng có thể có các điểm chèn quảng cáo với thời lượng khác nhau chỉ đơn giản là lưu luồng thời gian sẽ không hoạt động. Những gì bạn thực sự muốn làm là tiếp tục từ nội dung.

Phương thức chuyển đổi để khôi phục

SDK IMA DAI cung cấp một cặp phương thức để yêu cầu thời gian nội dung cho thời gian truyền trực tuyếnthời gian truyền trực tuyến nhất định cho một nội dung cụ thể . Khi sử dụng các phương pháp chuyển đổi này, bạn có thể lưu trữ thời gian phát nội dung rồi tìm thời gian phát trực tiếp tương ứng ở thực thể mới của luồng. Sau đây là cách tiếp cận, bao gồm cả một đường liên kết đến một ứng dụng mẫu cho thấy cách triển khai đánh dấu trang đang hoạt động.

Đang lưu dấu trang

Lưu dấu trang khi Hoạt động bị tạm dừng.

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

Đang tải dấu trang

Tải dấu trang khi yêu cầu lại luồng. Đó là một phần của quá trình triển khai giao diện 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;
    }
  }
}

Ứng dụng mẫu

Ứng dụng mẫu