IMA SDK 可讓您輕鬆將多媒體廣告整合至您的網站和應用程式。IMA SDK 可以 向任何 與 VAST 相容的廣告伺服器,並管理您應用程式中的廣告播放方式。使用 IMA DAI SDK 時,應用程式可提供 廣告和內容影片的串流請求 (VOD 或直播內容)。接著,SDK 會傳回 讓您省去切換廣告和內容影片的麻煩 應用程式內的一切
選取所需的 DAI 解決方案
廣告連播放送 DAI
本指南將說明如何使用 適用於 tvOS 的 IMA DAI SDK。如果您想追蹤 以及完整範例,請下載 Pod Serving 範例應用程式 (Obj C 或 Swift)。
IMA DAI 廣告連播放送總覽
使用適用於 tvOS 的 IMA DAI SDK 導入廣告連播放送時,有兩個主要步驟 元件:
StreamRequest
:定義串流要求的目標物件 Google 的廣告伺服器。必須使用IMAPodStreamRequest
敬上 或IMAPodVODStreamRequest
啟用廣告連播放送這兩種方法都需要聯播網代碼和IMAPodStreamRequest
也需要自訂素材資源金鑰。API 金鑰為 選用。IMAStreamManager
:這個物件會處理 影片和 IMA DAI SDK 相關,例如觸發追蹤連線偵測 (ping) 和 將串流事件轉送至發布商。
必要條件
開始之前,請先備妥以下項目:
- Xcode 13 以上版本。
- CocoaPods (建議)、Swift 套件管理員或 下載的 tvOS 適用的 IMA DAI SDK。
- 已設定 IMA DAI SDK 的 tvOS 應用程式,用於播放影片串流的 DAI 廣告。如果您還沒有這類應用程式,建議您使用 tvOS DAI BasicExample做為 起點BasicExample 含有以下程式碼集所參照的程式碼集 指南。如要進一步瞭解如何導入 IMA DAI SDK,請參閱 快速入門指南。
設定廣告連播放送變數
廣告連播放送作業所需的所有變更,都在 ViewController.swift
Swift 或 ViewController.m
在 Objective-C 中。本指南中的程式碼片段
預設為使用 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 廣告連播串流要求,方法如下:
為 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
}
大功告成!您目前透過 適用於 tvOS 的 IMA DAI SDK如要查看其他使用 IMA DAI SDK 的範例, 查看 GitHub 上的範例。