启用开放式衡量

请选择平台: HTML5 Android iOS

iOS 版 IMA SDK 包含 Open Measurement (OM) SDK,这是由美国互动广告局 (IAB) 开发的业界标准,可实现第三方可见度和验证衡量。使用 iOS 版 IMA SDK 时,其中包含的 OM SDK 会自动解析 VAST 广告代码中的 <AdVerifications> 代码,并使用 OMID API 将可见度数据发送给指定的衡量服务供应商。IMA SDK 支持 OM SDK v1.6、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,请使用支持 OM SDK 的 IMA 版本以及测试广告代码。

您应该会在 VAST 响应中看到返回的 <AdVerifications>。

注册视频控件叠加层遮挡

视频控件(例如暂停按钮或进度条)可为用户提供重要的播放信息和操作。在移动设备上,由于点按不精确和用户期望,在媒体元素上呈现大型、易于触摸的控件已成为常见做法。这些控件通常会在用户点按时淡入和淡出,并且在绝大多数播放时间内不可见。

如需查看叠加视频控件的示例,请参阅以下有关 YouTube 应用呈现控件的图片:

打开测量叠加层示例图片

使用 IMA SDK 时,大多数发布商都会在广告展示容器上方添加一个基本透明的视图,从而实现这些控件。通常,控件是此视图的子元素,会完全遮挡底层视频播放器。此透明叠加层用于捕获点按事件,然后在用户点按时向用户呈现控件。

计算使用 Open Measurement SDK 的广告可见度时,覆盖媒体元素的所有视图都会被视为遮挡物,并会降低可见率。如果透明点按叠加层位于整个广告展示容器上方,则广告资源可能会被声明为完全不可见。

Open Measurement SDK 规定,视频控件可被视为对用户体验至关重要的“友好”遮挡。注册为友好控件后,这些控件将从广告可见度衡量中排除。

在 IAB 和 MRC 的支持下,IMA SDK 引入了一个 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)];
// 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()
}