เริ่มต้นใช้งาน IMA DAI SDK

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

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

DAI ที่แสดงในพ็อด

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

ภาพรวมการแสดงพ็อด IMA DAI

การติดตั้งใช้งานการแสดงพ็อดโดยใช้ IMA DAI SDK สำหรับ tvOS ประกอบด้วย คอมโพเนนต์

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

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

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

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

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

ตั้งค่าตัวแปรการแสดงพ็อด

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

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

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

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

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl =
    "https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000&seg-host=dai.google.com&stream_id=[[STREAMID]]"
  static let networkCode = "51636543"
  static let customAssetKey = "google-sample"
  static let APIKey = ""
  static let backupStreamURLString =
    "http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/master.m3u8"

  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 SDK สำหรับ tvOS หากต้องการดูตัวอย่างอื่นๆ ของการใช้ IMA DAI SDK ดูตัวอย่างเกี่ยวกับ GitHub