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 v1.4、VAST 2 以上版本的 GAM AdVerifications 擴充功能,以及 VAST 4 以上版本的 AdVerifications 節點。如要充分運用開放式評估功能,請注意下列事項:

  • 您必須擁有版本才能使用 Open Measurement 3.9.0 或以上 IMA SDK for iOS。

  • 如果使用 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
    • 收合
    • 進度/搜尋
    • 其他播放相關動作
  • 浮水印
  • 彈出式視窗
  • 對話方塊
  • 非暫時性按鈕
  • 其他模糊不清的檢視畫面

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

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];