เริ่มต้นใช้งาน 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 Key หรือไม่ก็ได้

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

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

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

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

การเปลี่ยนแปลงทั้งหมดที่จำเป็นสำหรับการแสดงพ็อดใน ViewController.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