啟用 Open Measurement

選取平台: HTML5 Android iOS

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

  • 如要使用 Open Measurement,您必須具備 3.9.0 以上版本的 iOS 適用 IMA SDK。

  • 如果使用 VAST 4.1 以上版本,廣告必須設定為在 VAST 中放送 <AdVerifications>,如 VAST 4.1 規格所述;否則應使用 <Extension type="AdVerifications">

  • 請勿使用任何疊加層 (透明或不透明) 遮蓋 AdDisplayContainer,否則 OM SDK 會將這些疊加層標示為障礙物,進而降低可視度。

必要條件

測試

如要使用 IMA SDK 測試開放式評估,請使用支援 OM SDK 的 IMA 版本,以及測試廣告代碼

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

註冊影片控制項重疊顯示障礙

視訊控制功能(例如暫停按鈕或進度條)為使用者提供必要的播放資訊和操作。在行動裝置上,由於輕觸不精確和使用者期望等因素,在媒體元素上算繪大型觸控友善控制項已成為常見做法。這些控制選項通常會在使用者輕觸時淡入和淡出,且在大部分的播放時間內都不會顯示。

例如,有關疊加視訊控制項的範例,請參閱下圖 YouTube 應用程式渲染控制項:

開啟測量疊加層範例圖片

使用 IMA SDK 時,大多數發布商會透過在廣告顯示容器上方新增幾乎透明的檢視區塊,實作這些控制項。通常情況下,控制項是此視圖的子元素,該視圖完全遮擋了底層視訊播放器。這個透明的疊加層可用來擷取輕觸事件,並在輕觸時向使用者顯示控制項。

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

Open Measurement SDK 會將影片控制項視為「無害」的遮蔽物,因為這類控制項對使用者體驗至關重要。註冊為友善控制項後,這些控制項就不會納入廣告可視度評估。

在 IAB 和 MRC 的支援下,IMA SDK 引入了一個 API,用於向 Open Measurement SDK 註冊這些疊加層。這些控制必須是完全透明的疊加層或小按鈕。與影片控制項無關的其他檢視畫面不得註冊。

DO register 請勿註冊
  • 透明疊加層,用於擷取使用者輕觸動作
  • 暫時性按鈕
    • 暫停
    • 播放
    • 全螢幕
    • 投影屏/AirPlay
    • 收合
    • 進展/尋求
    • 其他與播放相關的操作
  • 浮水印
  • 彈出視窗
  • 對話方塊
  • 非暫時性按鈕
  • 其他遮蔽檢視畫面

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

UIView *myTransparentTapOverlay = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 250)];
UIButton *myPauseButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 10)];
// Replace myTransparentTapOverlay and myPauseButton with your own elements
// that function as video control 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];

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

Objective-C

- (void)unregisterObstructionsForContainer:(IMAAdDisplayContainer *)displayContainer {
    // This removes all previously registered friendly obstructions from the container.
    [displayContainer unregisterAllFriendlyObstructions];
}

Swift

func unregisterObstructions(displayContainer: IMAAdDisplayContainer) {
  // This removes all previously registered friendly obstructions from the container.
  displayContainer.unregisterAllFriendlyObstructions()
}