您可以使用 IMA SDK 輕鬆將多媒體廣告整合至網站和應用程式。IMA SDK 可向任何 符合 VAST 規定的廣告伺服器要求廣告,並管理應用程式中的廣告播放作業。透過 IMA DAI SDK,應用程式會針對廣告和內容影片 (隨選影片或直播內容) 提出串流要求。接著,SDK 會傳回合併的影片串流,因此您不必在應用程式中管理廣告和內容影片之間的切換。
選取感興趣的動態廣告解決方案
全方位服務 DAI
本指南將說明如何將 IMA DAI SDK 整合至影片播放器應用程式。如要查看或參考已完成整合的範例,請從 GitHub 下載簡易範例。
IMA DAI 總覽
實作 IMA DAI SDK 涉及兩個主要元件,如本指南所示:
StreamRequest
:VODStreamRequest
或LiveStreamRequest
:定義串流要求的物件。串流要求可以是隨選影片或直播串流。直播串流要求會指定素材資源金鑰,而 VOD 要求則會指定 CMS ID 和影片 ID。這兩種要求類型可選擇加入存取指定串流所需的 API 金鑰,以及 IMA SDK 的 Google Ad Manager 聯播網代碼,以便處理 Google Ad Manager 設定中指定的廣告 ID。StreamManager
:處理動態廣告插播串流和與 DAI 後端互動的物件。串流管理員也會處理追蹤 ping,並將串流和廣告事件轉送給發布商。
必要條件
- 三個空白檔案
- dai.html
- dai.css
- dai.js
- 電腦上已安裝 Python,或用於測試的網路伺服器
啟動開發伺服器
由於 IMA DAI SDK 會使用與載入頁面相同的通訊協定載入依附元件,因此您必須使用網路伺服器來測試應用程式。如要快速啟動本機開發伺服器,請使用 Python 內建的伺服器。
使用指令列,從包含
index.html
檔案的目錄執行:python -m http.server 8000
透過網路瀏覽器前往
http://localhost:8000/
您也可以使用任何其他網頁伺服器,例如 Apache HTTP 伺服器。
建立影片播放器
首先,請修改 dai.html,建立 HTML5 影片元素和 div,用於點閱。以下範例會匯入 IMA DAI SDK。詳情請參閱「匯入 IMA DAI SDK」。
此外,請新增必要的標記,以便載入 dai.css
和 dai.js
檔案,以及匯入 hls.js
影片播放器。接著修改 dai.css
,指定頁面元素的大小和位置。最後,在 dai.js
中定義變數來保存串流要求資訊、在網頁載入時執行的 initPlayer()
函式,並設定播放按鈕,以便在點擊時要求串流。
如要在暫停的廣告插播期間繼續播放,請為影片元素的 pause
和 start
事件設定事件監聽器,以便顯示及隱藏播放器控制項。
載入 IMA DAI SDK
接著,請在 dai.html 中使用指令碼標記新增 IMA 架構,並放在 dai.js 的標記之前。
初始化 StreamManager
如要要求一組廣告,請建立 ima.dai.api.StreamManager
,負責要求及管理 DAI 串流。建構函式會採用影片元素和廣告 UI 元素,以便處理廣告點擊。
提出串流要求
定義用來要求串流的函式。這個範例包含 VOD 和直播的函式,可建立 VODStreamRequest
類別和 LiveStreamRequest
類別的例項。取得 streamRequest
例項後,請使用串流要求例項呼叫 streamManager.requestStream()
方法。
這兩種串流要求方法都會使用選用的 API 金鑰。如果您使用受保護的串流,就必須建立動態廣告插播驗證金鑰。詳情請參閱「驗證 DAI 影片串流請求」。這個範例中的兩個串流都未使用動態廣告插播驗證金鑰進行保護,因此不會使用 apiKey
。
剖析串流中繼資料 (僅限直播)
針對直播,您還需要新增處理常式來監聽計時中繼資料事件,並將事件轉送至 StreamManager
類別,以便 IMA 在廣告插播期間發出廣告事件:
本指南使用 hls.js
播放器進行串流播放,但中繼資料實作方式取決於您使用的播放器類型。
處理串流事件
為主要影片事件實作事件監聽器。這個範例會呼叫 onStreamEvent()
函式,處理 LOADED
、ERROR
、AD_BREAK_STARTED
和 AD_BREAK_ENDED
事件。這個函式會處理串流載入、串流錯誤,以及在廣告播放期間停用播放器控制項,這也是 IMA SDK 所需的功能。
串流載入後,影片播放器會使用 loadUrl()
函式載入並播放提供的網址。
大功告成!您現在可以使用 IMA DAI SDK 請求及顯示廣告。如要進一步瞭解進階 SDK 功能,請參閱其他指南或 GitHub 上的範例。