ตั้งค่าด้วย DAI ของบริการพ็อด

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

คู่มือนี้แสดงวิธีเล่นสตรีมแบบสดหรือสตรีม VOD ของ DAI Pod Serving โดยใช้ IMA DAI SDK สำหรับ tvOS กับวิดีโอเพลเยอร์ หากต้องการดูหรือทำตามการผสานรวมตัวอย่างที่เสร็จสมบูรณ์แล้ว ให้ดาวน์โหลดแอปตัวอย่าง Pod Serving (Obj C หรือ Swift)

ภาพรวมของ IMA DAI Pod Serving

การใช้ Pod Serving โดยใช้ IMA DAI SDK สำหรับ tvOS มีองค์ประกอบหลัก 2 อย่าง ได้แก่

  • StreamRequest: ออบเจ็กต์ที่กำหนดคำขอสตรีมไปยังเซิร์ฟเวอร์โฆษณาของ Google ต้องสร้างโดยใช้ IMAPodStreamRequest หรือ IMAPodVODStreamRequest เพื่อเปิดใช้การแสดงโฆษณาแบบพ็อด ทั้ง 2 วิธีต้องใช้รหัสเครือข่าย และ IMAPodStreamRequest ยังต้องใช้คีย์เนื้อหาที่กำหนดเองด้วย คุณจะใช้คีย์ API หรือไม่ก็ได้

  • IMAStreamManager: ออบเจ็กต์ที่จัดการการสื่อสารระหว่างสตรีมวิดีโอกับ IMA DAI SDK เช่น การเริ่มส่งคําสั่ง ping ติดตามและการส่งต่อเหตุการณ์สตรีมไปยังผู้เผยแพร่โฆษณา

ข้อกำหนดเบื้องต้น

ก่อนเริ่มต้น คุณต้องมีสิ่งต่อไปนี้

  • Xcode 13 ขึ้นไป
  • วิธีการติดตั้ง IMA SDK
  • แอป tvOS ที่ตั้งค่าด้วย IMA DAI SDK เพื่อเล่นสตรีมวิดีโอที่มีโฆษณา DAI อยู่แล้ว หากยังไม่มีแอปดังกล่าว เราขอแนะนำให้ใช้ tvOS DAI BasicExample เป็นจุดเริ่มต้น BasicExample มีฐานของโค้ดที่อ้างอิงในคู่มือนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีติดตั้งใช้งาน IMA DAI SDK ได้ที่คู่มือเริ่มใช้งานฉบับย่อ

ตั้งค่าตัวแปร Pod Serving

ทำการเปลี่ยนแปลงทั้งหมดสำหรับการแสดงโฆษณาแบบกลุ่มใน ViewController.swift ใน Swift หรือ ViewController.m ใน Objective-C ข้อมูลโค้ดในคู่มือนี้จะใช้ภาษา Swift เป็นค่าเริ่มต้น ขั้นตอนแรกคือการอัปเดตตัวแปรค่าคงที่

เพิ่มค่าคงที่ของคำขอสตรีมพ็อดโฆษณาต่อไปนี้

  • STREAM_URL (ใช้สำหรับไลฟ์สดเท่านั้น): URL ของสตรีมวิดีโอที่ได้จากเครื่องมือจัดการไฟล์ Manifest หรือพาร์ทเนอร์บุคคลที่สามที่ใช้ Pod Serving โดยคุณจะต้องใส่รหัสสตรีมที่ IMA DAI SDK ระบุไว้ก่อนส่งคำขอ ในกรณีนี้ URL ของสตรีมจะมีตัวยึดตำแหน่ง "[[STREAMID]]" ซึ่งคุณจะแทนที่ด้วยรหัสสตรีมก่อนส่งคำขอ
  • NETWORK_CODE: รหัสเครือข่ายสำหรับบัญชี Ad Manager 360
  • CUSTOM_ASSET_KEY (ใช้สำหรับไลฟ์สดเท่านั้น): คีย์เนื้อหาที่กำหนดเองซึ่งระบุเหตุการณ์การแสดงพ็อดใน Ad Manager 360 โดยผู้จัดการไฟล์ Manifest หรือพาร์ทเนอร์ Pod Serving บุคคลที่สามสามารถสร้างไฟล์นี้ได้
  • API_KEY (ใช้สำหรับไลฟ์สดเท่านั้น): คีย์ API ที่ไม่บังคับซึ่งอาจจำเป็นต้องใช้เพื่อดึงรหัสสตรีมจาก IMA DAI SDK

เปลี่ยนส่วนตัวแปรของตัวอย่างให้ตรงกับข้อมูลต่อไปนี้

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl = ""
  static let networkCode = ""
  static let customAssetKey = ""
  static let APIKey = ""
  static let backupStreamURLString = ""

  var adsLoader: IMAAdsLoader?
  ...

สร้างคำขอสตรีมพ็อดแบบสดหรือ VOD

การแสดงพ็อดไลฟ์สด

แก้ไขเมธอด requestStream เพื่อสร้างคำขอสตรีมพ็อดแบบสดโดยสร้างอินสแตนซ์ IMAPodStreamRequest

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodStreamRequest(
      networkCode: self.networkCode,
      customAssetKey: self.customAssetKey,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

การแสดงพ็อดสตรีม VOD

แก้ไขเมธอด requestStream เพื่อสร้างคำขอสตรีมพ็อด VOD โดยสร้างอินสแตนซ์ IMAPodVODStreamRequest

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodVODStreamRequest(
      networkCode: self.networkCode,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

แก้ไขและตั้งค่า URL ของสตรีม

การแสดงพ็อดไลฟ์สด

แก้ไขเมธอด IMAAdsLoaderDelegate โดยใช้ streamManager.streamId เพื่อรับรหัสสตรีม จากนั้นใส่รหัสสตรีมลงใน STREAM_URL โดยแทนที่ "[[STREAMID]]" หลังจากทำการเปลี่ยนแปลงนี้แล้ว ให้ตั้งค่า URL ของสตรีมใหม่โดยใช้ videoDisplay.loadStream()

  ...

  // MARK: - IMAAdsLoaderDelegate
  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
    let loadedStreamUrl = URL(string:urlString)
    self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
    self.videoDisplay.play()
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

  ...

การแสดงพ็อดสตรีม VOD

แก้ไขเมธอด IMAAdsLoaderDelegate โดยใช้ streamManager.streamId เพื่อรับรหัสสตรีม จากนั้นขอ URL ของสตรีมจากพาร์ทเนอร์เทคโนโลยีวิดีโอ (VTP) และเรียกใช้ IMAStreamManager.loadThirdPartyStream() เพื่อให้ IMA โหลด URL ของสตรีมและคำบรรยายที่ TVP แสดงผล

  ...

  // MARK: - IMAAdsLoaderDelegate
  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    // 'vtpInterface' is a place holder for your own video technology partner
    // (VTP) API calls.
    let streamUrl = vtpInterface.requestStreamURL(streamID)
    self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

ล้างเนื้อหา IMA DAI

เมื่อคุณขอและแสดงโฆษณาในสตรีมการแสดงโฆษณาแบบพ็อดด้วย IMA DAI SDK เรียบร้อยแล้ว เราขอแนะนำให้ล้างทรัพยากรหลังจากเซสชันการแสดงโฆษณาแบบพ็อดเสร็จสมบูรณ์ เรียก IMAStreamManager.destroy() เพื่อหยุดการเล่นสตรีม หยุดการติดตามโฆษณาทั้งหมด และปล่อยเนื้อหาสตรีมที่โหลดไว้ทั้งหมด

หากต้องการดูตัวอย่างอื่นๆ ของการใช้ tvOS SDK โปรดดูตัวอย่างใน GitHub