IMA DAI SDK 中的 Open Measurement

iOS 版 IMA SDK 包含 Open Measurement (OM) SDK,這是由互動廣告協會 (IAB) 開發的業界標準,可啟用第三方可視度和驗證評估功能。針對iOS使用 IMA SDK 時,隨附的 OM SDK 會自動剖析 VAST 廣告代碼中的 <AdVerifications> 代碼,並透過 OMID API 將可視度資料傳送給指定的評估服務供應商。IMA SDK 支援 OM SDK v、VAST 2 以上版本的 GAM AdVerifications 擴充功能,以及 VAST 4+ 上的 AdVerifications 節點。如要善用 Open Measurement,請記住以下要點:

  • 如要使用 Open Measurement,您必須擁有 3.9.0 或更新版本 (iOS 適用的 IMA SDK)。

  • 如果使用 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 註冊這些疊加層。這些控制項必須是完全透明的疊加層或小型按鈕。與影片控制項無關的任何其他檢視畫面不得註冊。

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

以下程式碼範例示範如何在廣告顯示容器中註冊影片控制項疊加層:

UIView *myTransparentTapOverlay = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 250)];
UIButton *myPauseButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 10)];
// Substitute "myTransparentTapOverlay" and "myPauseButton" with the elements
// you want to register as video controls overlays.
// Make sure to register before ad playback starts.
IMAFriendlyObstruction *overlayObstruction =
      [[IMAFriendlyObstruction alloc] initWithView:myTransparentTapOverlay
                                           purpose:IMAFriendlyObstructionPurposeNotVisible
                                    detailedReason:@"This overlay is transparent"];
IMAFriendlyObstruction *pauseButtonObstruction =
      [[IMAFriendlyObstruction alloc] initWithView:myPauseButton
                                           purpose:IMAFriendlyObstructionPurposeMediaControls
                                    detailedReason:@"This is the video player pause button"];

[displayContainer registerFriendlyObstruction:overlayObstruction];
[displayContainer registerFriendlyObstruction:pauseButtonObstruction];

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

[displayContainer unregisterAllFriendlyObstructions];