IMA SDK 中的 Open Measurement

Android 版 IMA SDK 包含 Open Measurement (OM) SDK,這是由互動廣告局 (IAB) 開發的業界標準,可用於第三方可視度和驗證評估。使用 Android 版 IMA SDK 時,內含的 OM SDK 會自動剖析 VAST 廣告代碼中的 <AdVerifications> 代碼,並透過 OMID API 將可視度資料傳送至指定的評估廠商。IMA SDK 支援 OM SDK v1.4、VAST 2 以上版本的 GAM AdVerifications 擴充功能,以及 VAST 4 以上版本的 AdVerifications 節點。如要充分運用 Open Measurement,請留意下列事項:

  • 如要使用 Open Measurement,您必須使用 3.11.0 以上版本的 IMA SDK for Android。不過,本指南中的範例是針對最新版本的 SDK 設計,並包含 3.16.5 版中推出的 API。

  • 如果使用 VAST 4.1 以上版本,則必須依據 VAST 4.1 規格設定廣告,以便在 VAST 中傳送 <AdVerifications>;否則,請使用 <Extension type="AdVerifications">

  • 請避免使用任何重疊元素 (透明或不透明) 遮蓋 AdDisplayContainer,因為 OM SDK 會將這些疊加層標示為阻礙,並降低可視度。

必要條件

測試

如要使用 IMA SDK 測試 Open Measurement,請使用以上 SDK 的必要版本,並搭配測試廣告代碼

您應該會在 VAST 回應中看到傳回的 <AdVerifications>

註冊影片控制項重疊遮蔽物

影片控制項 (例如暫停按鈕或進度列) 可為使用者提供必要的播放資訊和動作。在行動裝置上,由於輕觸不精確且使用者有特定期待,因此常見的做法是在媒體元素上顯示大型、觸控友善的控制項。這些控制項通常會在使用者輕觸時淡入和淡出,而且大多數播放時間都不會顯示這些控制項。

以下是 YouTube 應用程式算繪的影片控制項範例:

使用 IMA SDK 時,大多數發布商會在廣告顯示容器上方加入幾乎透明的檢視畫面,藉此實作這些控制項。通常,控制項是這個檢視畫面的子元素,可完全遮蔽底層的影片播放器。這個透明疊加層用於擷取輕觸事件,然後在使用者輕觸時向使用者顯示控制項。

計算透過 Open Measurement SDK 的廣告可視度時,系統會將疊加媒體元素的所有檢視畫面視為阻礙,降低可視率。如果透明的輕觸重疊位於整個廣告顯示容器上方,系統可能會宣告廣告空間完全無法查看。

Open Measurement SDK 會將影片控制項佈建為「容易使用」的障礙,但這對於使用者體驗至關重要。一旦註冊為友善控制項,系統就會將這些控制項排除在廣告可視度評估範圍。

IMA SDK 支援 IAB 和 MRC,因此推出了 API,可將這些疊加層註冊至 Open Measurement SDK。這些控制項必須是完全透明的重疊元素或小型按鈕。請勿註冊任何與影片控制項無關的其他檢視畫面。

DO 暫存器 請勿註冊
  • 透明疊加層,用於擷取使用者輕觸動作
  • 暫時性按鈕
    • 暫停
    • 播放
    • 全螢幕
    • 投放/AirPlay
    • 收合
    • 進度/搜尋
    • 其他播放相關動作
  • 浮水印
  • 彈出式視窗
  • 對話方塊
  • 非暫時性按鈕
  • 其他模糊不清的檢視畫面

以下程式碼範例示範如何在廣告顯示容器中,登錄影片控制項重疊廣告:

myTransparentTapOverlay = (ViewGroup) rootView.findViewById(R.id.overlay);
myPauseButton = (ImageButton) rootView.findViewById(R.id.pauseButton);
// Substitute "myTransparentTapOverlay" and "myPauseButton" with the
// elements you want to register as video controls overlays.
// Make sure to register before ad playback starts.
overlayObstruction = ImaSdkFactory.createFriendlyObstruction(
  myTransparentTapOverlay,
  FriendlyObstructionPurpose.NOT_VISIBLE,
  "This overlay is transparent"
);
pauseButtonObstruction = ImaSdkFactory.createFriendlyObstruction(
  myPauseButton,
  FriendlyObstructionPurpose.VIDEO_CONTROLS,
  "This is the video player pause button"
);

displayContainer.registerFriendlyObstruction(overlayObstruction);
displayContainer.registerFriendlyObstruction(pauseButtonObstruction);

完成後,您可以呼叫下列方法移除這些障礙物:

displayContainer.unregisterAllFriendlyObstructions();