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

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

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

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

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

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

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

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

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

สิ่งที่ต้องดำเนินการก่อน

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

  • Xcode 13 ขึ้นไป
  • CocoaPods (แนะนำ), Swift Package Manager หรือสำเนาที่ดาวน์โหลดของ IMA DAI SDK สำหรับ iOS
  • แอป iOS ที่ตั้งค่าด้วย IMA DAI SDK อยู่แล้วเพื่อเล่นสตรีมวิดีโอด้วยโฆษณา DAI หากคุณยังไม่มีแอปดังกล่าว เราขอแนะนำให้ใช้ iOS DAI 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 สำหรับ iOS หากต้องการดูตัวอย่างอื่นๆ ของ IMA DAI SDK ที่กำลังใช้อยู่ โปรดดูตัวอย่างบน GitHub