ตั้งค่า IMA SDK สําหรับ DAI

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

IMA SDK ช่วยให้ผสานรวมโฆษณามัลติมีเดียเข้ากับเว็บไซต์และแอปได้อย่างง่ายดาย IMA SDK สามารถ ขอโฆษณาจากเซิร์ฟเวอร์โฆษณา ที่รองรับ VAST และจัดการการเล่นโฆษณาในแอปได้ เมื่อใช้ IMA DAI SDK แอปจะส่งคำขอสตรีมสำหรับโฆษณาและเนื้อหาวิดีโอ ไม่ว่าจะเป็นเนื้อหา VOD หรือเนื้อหาสด จากนั้น SDK จะแสดงสตรีมวิดีโอที่รวมกัน เพื่อให้คุณไม่ต้องจัดการการสลับระหว่างโฆษณาและวิดีโอเนื้อหา ภายในแอป

เลือกโซลูชัน DAI ที่คุณสนใจ

DAI Pod Serving

คู่มือนี้แสดงวิธีเล่นสตรีมแบบสดหรือ VOD ของ DAI Pod Serving โดยใช้ IMA DAI SDK สำหรับ tvOS กับวิดีโอเพลเยอร์ หากต้องการดูหรือทำตามตัวอย่างการผสานรวมที่เสร็จสมบูรณ์แล้ว ให้ดาวน์โหลดแอปตัวอย่างการแสดงโฆษณาพ็อด (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 เช่น การทริกเกอร์พิงการติดตามและ การส่งต่อเหตุการณ์สตรีมไปยังผู้เผยแพร่โฆษณา

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

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

  • 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 method เพื่อสร้างคำขอไลฟ์พอดสตรีมโดย การสร้างอินสแตนซ์ 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