開始使用 IMA DAI SDK

IMA SDK 可讓您輕鬆將多媒體廣告整合至您的網站和應用程式。IMA SDK 可以 向任何 與 VAST 相容的廣告伺服器,並管理您應用程式中的廣告播放方式。使用 IMA DAI SDK 時,應用程式可提供 廣告和內容影片的串流請求 (VOD 或直播內容)。接著,SDK 會傳回 讓您省去切換廣告和內容影片的麻煩 應用程式內的一切

選取所需的 DAI 解決方案

廣告連播放送 DAI

本指南將說明如何使用 與簡易影片播放器中的 iOS 專用 IMA DAI SDK 整合。如果您想追蹤 以及完整樣本 廣告連播放送範例

IMA DAI 廣告連播放送總覽

使用適用於 iOS 的 IMA DAI SDK 導入廣告連播放送時,必須完成兩個主要步驟 元件:

  • StreamRequest:定義串流要求的目標物件 Google 的廣告伺服器。必須使用 IMAPodStreamRequest敬上 或 IMAPodVODStreamRequest 啟用廣告連播放送這兩種方法都需要聯播網代碼IMAPodStreamRequest 也需要自訂素材資源金鑰API 金鑰為 選用。

  • IMAStreamManager:這個物件會處理 影片和 IMA DAI SDK 相關,例如觸發追蹤連線偵測 (ping) 和 將串流事件轉送至發布商。

必要條件

開始之前,請先備妥以下項目:

設定廣告連播放送變數

進行廣告連播放送所需的所有變更,都是在以下項目的 ViewController.swift 中執行 在 Objective-C 中 swift 或 ViewController.m。本指南中的程式碼片段 預設為使用 Swift 語言。第一步是更新 常數變數。

以下是要新增的廣告連播串流請求常數:

  • STREAM_URL (僅適用於直播):由以下來源提供的影片串流網址: 來管理資訊清單操作員或第三方合作夥伴。它應該 您必須先插入 IMA DAI SDK 提供的串流 ID,才能 提出要求。在這個例子中,串流網址會包含預留位置 "[[STREAMID]]",在提出之前,會替換為串流 ID 請求。
  • NETWORK_CODE:Ad Manager 360 帳戶的聯播網代碼。
  • CUSTOM_ASSET_KEY (僅適用於直播):自訂素材資源金鑰; 在 Ad Manager 360 中識別廣告連播放送事件建立 Deployment 的 資訊清單操縱器或第三方 Pod 放送合作夥伴
  • API_KEY (僅適用於直播):此為選用 API 金鑰,可 必須從 IMA DAI SDK 擷取串流 ID。

將範例的變數區段改為以下內容:

...
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?
  ...

建立直播或隨選廣告連播串流請求

直播活動廣告連播放送

修改 requestStream 方法以建立 Pod 串流要求,方法是: 為 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 Pod 串流要求,方法是: 為 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)
  }

  ...

編輯並設定串流網址

直播活動廣告連播放送

修改 IMAAdsLoaderDelegate 方法,使用 streamManager.streamId 取得串流 ID接著,在 STREAM_URL 中插入串流 ID,並將 "[[STREAMID]]"。這項變更完成後,新的串流網址即可 使用 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 取得串流 ID然後向影片技術請求串流網址 合作夥伴 (VTP)。接著呼叫 IMAStreamManager.loadThirdPartyStream() 以使用 IMA 載入串流網址和 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
  }

大功告成!您目前透過 適用於 iOS 的 IMA DAI SDK如要查看其他使用 IMA DAI SDK 的範例, 查看 GitHub 上的範例