IMA DAI SDK 中的 Open Measurement

适用于 Android 的 IMA SDK 包含 Open Measurement (OM) SDK,这是由互动广告联盟 (IAB) 开发的业界标准,可实现第三方可见度和验证衡量。针对 Android 设备,随附的 OM SDK 会自动解析 <AdVerifications> 代码,并将可见度数据发送到 通过 OMID API 指定指定的衡量服务供应商。IMA SDK 支持 OM SDK v1.4、VAST 2+ 上的 GAM AdVerifications 扩展; 以及 VAST 4 上的 AdVerifications 节点 请注意以下几点:

  • 如需使用 Open Measurement,您必须使用 Android 版 IMA SDK 3.11.0 或更高版本。不过,本指南中的示例适用于最新版本的 SDK,并包含版本 3.16.5 中引入的 API。

  • 如果使用 VAST 4.1 或更高版本,则必须根据 VAST 4.1 规范将广告配置为在 VAST 中使用 <AdVerifications> 进行流量传送;否则,应使用 <Extension type="AdVerifications">

  • 请勿使用任何叠加层(透明或不透明)遮盖 AdDisplayContainer,因为这些叠加层会被 OMSDK 标记为遮挡物,从而降低可见度。

前提条件

测试

如需使用 IMA SDK 测试 Open Measurement,请使用上述任一必需的 SDK 版本以及测试广告代码

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

注册视频控件叠加层遮挡

暂停按钮或进度条等视频控件可提供基本的播放功能 为用户提供各种信息和操作在移动设备上,点按操作不准确和用户 基于人们的期望,我们通常的做法是 对媒体元素进行控制这些控件通常会在用户点按时淡入淡出,并且在播放的大部分时间都处于不可见状态。

以下是 YouTube 应用呈现的视频控件的示例:

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

通过 Open Measurement SDK 计算广告可见度时,所有观看次数 叠加在媒体元素上的行为会被视为遮挡,并减少 可见率如果透明的点按叠加层位于 但在整个广告展示容器中,可以声明 完全无法看到

Open Measurement SDK 针对要考虑的视频控件做出了规定 “友好”对用户体验至关重要的障碍物。一次 这些控件会从广告可见度中排除 衡量。

IMA SDK 在获得 IAB 和 MRC 支持后,引入了一个 API,用于在 Open Measurement SDK 中注册这些叠加层。这些控件必须完全透明 叠加层或小按钮。与视频控件无关的其他所有视图都必须 未注册。

立即注册 请勿注册
  • 用于捕获用户点按的透明叠加层
  • 瞬时按钮 <ph type="x-smartling-placeholder">
      </ph>
    • 暂停
    • 播放
    • 全屏
    • 投屏/AirPlay
    • 收起
    • 进度/跳转
    • 其他与播放相关的操作
  • 水印
  • 弹出式窗口
  • 对话框
  • 非瞬时按钮
  • 其他遮挡视图

以下示例代码演示了如何注册视频控件叠加层 :

<ph type="x-smartling-placeholder">
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();