บันทึกและโหลดบุ๊กมาร์กสตรีมโฆษณา

เลือกแพลตฟอร์ม: HTML5 Android iOS tvOS Roku

คู่มือนี้แสดงวิธีติดตั้งใช้งานการบุ๊กมาร์กโดยใช้ IMA DAI SDK เมื่อใช้การแทรกโฆษณาแบบไดนามิก (DAI) สำหรับสตรีมวิดีโอออนดีมานด์ (VOD) ซึ่งสมมติว่ามีการใช้งาน IMA DAI ที่ใช้งานได้ เช่น การใช้งานที่แสดงในส่วนเริ่มต้นใช้งาน

การบุ๊กมาร์กคืออะไร

การสร้างบุ๊กมาร์กเป็นความสามารถในการบันทึกจุดที่เฉพาะเจาะจงในสตรีมเนื้อหา แล้วกลับไปยังจุดนั้นได้ สมมติว่าผู้ใช้คนหนึ่งดูเนื้อหานาน 5 นาที ออกจากสตรีมวิดีโอ แล้วกลับมาดูต่อ การสร้างบุ๊กมาร์กจะบันทึกตำแหน่งของผู้ใช้ในสตรีม ดังนั้นสตรีมจะกลับมาที่จุดที่ดูค้างไว้ แล้วให้ผู้ใช้ดูต่อได้อย่างต่อเนื่อง

การคั่นหน้า DAI เบื้องหลัง

เมื่อบุ๊กมาร์กสตรีม DAI คุณต้องบันทึกรหัสสตรีมและเวลา เมื่อผู้ใช้ออกจากวิดีโอ เมื่อผู้ใช้กลับมา ให้ขอสตรีมอีกครั้ง และข้ามไปยังเวลาที่บันทึกไว้ เนื่องจากสตรีมที่ขอแต่ละอินสแตนซ์อาจมีช่วงพักโฆษณาที่มีระยะเวลาต่างกัน การบันทึกเวลาของสตรีมจึงใช้ไม่ได้ สิ่งที่คุณต้องการจริงๆ คือการดูต่อจากเวลาของเนื้อหาเดิม

วิธีการ Conversion ช่วยคุณได้

IMA DAI SDK มีเมธอด 2 อย่างสำหรับขอเวลาเนื้อหา สำหรับเวลาสตรีมที่ระบุ และเวลาสตรีมสำหรับเวลาเนื้อหาที่ระบุ เมื่อใช้วิธีการวัด Conversion เหล่านี้ คุณจะจัดเก็บเวลาของเนื้อหาที่บุ๊กมาร์กไว้ แล้วไปยังเวลาของสตรีมที่สอดคล้องกันใน อินสแตนซ์ใหม่ของสตรีมได้ ต่อไปนี้คือแนวทาง รวมถึงลิงก์ ไปยังแอปตัวอย่างที่แสดงการใช้งานการบุ๊กมาร์กที่ใช้งานได้

การบันทึกบุ๊กมาร์ก

บันทึกบุ๊กมาร์กเมื่อหยุดกิจกรรมชั่วคราว

Objective-C

- (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];
  [self.contentPlayer pause];
  // Ignore this if we're presenting a modal view (e.g. in-app clickthrough).
  if ([self.navigationController.viewControllers indexOfObject:self] == NSNotFound) {
    // Don't save bookmark if we're playing a live stream.
    if (self.video.streamType != StreamTypeLive) {
      NSTimeInterval contentTime = [self.streamManager
          contentTimeForStreamTime:CMTimeGetSeconds(self.contentPlayer.currentTime)];
      [self.delegate videoViewController:self didReportSavedTime:contentTime forVideo:self.video];
    }

Swift

override func viewWillDisappear(_ animated: Bool) {
  super.viewWillDisappear(animated)
  contentPlayer.pause()
  if isMovingFromParent {
    // Only save bookmark if we're playing a VOD stream.
    if let vodStream = stream as? VODStream, let streamManager = streamManager {
      let contentTime = streamManager.contentTime(
        forStreamTime: contentPlayer.currentTime().seconds)
      if contentTime.isFinite, contentTime > 0 {
        delegate?.videoViewController(self, didReportBookmarkedTime: contentTime, for: vodStream)
      }
    }
    if trackingContent {
      removeContentPlayerObservers()
    }
    streamManager?.destroy()
    adsLoader?.contentComplete()
    streamManager = nil
    adsLoader = nil
  }
}

กำลังโหลดบุ๊กมาร์ก

โหลดบุ๊กมาร์กเมื่อขอสตรีมอีกครั้ง ซึ่งเป็นส่วนหนึ่งของการติดตั้งใช้งานอินเทอร์เฟซ VideoStreamPlayer

Objective-C

case kIMAAdEvent_STREAM_LOADED: {
  if (self.video.streamType == StreamTypeVOD) {
    [self addContentPlayerObservers];
    if (self.video.savedTime > 0) {
      NSTimeInterval streamTime =
          [self.streamManager streamTimeForContentTime:self.video.savedTime];
      [self.IMAVideoDisplay seekStreamToTime:streamTime];
      self.video.savedTime = 0;
    }
  }

Swift

case .STREAM_LOADED:
  guard let stream else { return }
  addContentPlayerObservers()
  if let vodStream = stream as? VODStream, vodStream.bookmarkTime > 0 {
    bookmarkStreamTime = streamManager.streamTime(forContentTime: vodStream.bookmarkTime)
    if let time = bookmarkStreamTime {
      pendingBookmarkSeek = true
      logMessage(
        "STREAM_LOADED: Bookmark pending for contentTime: \(String(format: "%.2f", vodStream.bookmarkTime)) (streamTime: \(String(format: "%.2f", time)))"
      )
      vodStream.bookmarkTime = 0
    }
  }

แอปตัวอย่าง

แอปตัวอย่าง