移动富媒体广告

Google 移动广告 SDK 现已针对 MRAID v2 提供 Beta 版支持,并在此基础上支持 MRAID v3,让广告客户能够向 Ad Manager 发布商投放 MRAID v3 广告素材。本指南阐明了 MRAID v3 规范中不明确且可供解读的 MRAID 实现详细信息。本指南的目标对象是 MRAID v3 广告素材创作者。

前提条件

发布商必须运行以下版本:

  • 适用于 MRAID v3 的 Google 移动广告 SDK for iOS 7.30.0 或更高版本
  • 适用于 MRAID v2 的 Google 移动广告 SDK for iOS 7.4.0 或更高版本

实用入门指南

如果您不熟悉 MRAID,可以访问 IAB MRAID 页面了解详情。您还可以下载 MRAID v3 定义文档,其中详细介绍了下文中讨论的所有参数,以及 IAB 博文中的 MRAID v3 部分。

MRAID v3(Beta 版)实现详情

可见度 - exposureChange 事件

此事件受支持,我们建议您为新的 exposureChange 事件使用监听器,而不是已废弃的 viewableChange 事件。mraid.isViewable() 方法也已废弃。不过,为了保持向后兼容性,这些已废弃的方法仍受支持。

每当广告视图发生变化时,系统都会分派 exposureChange 事件定义。SDK 具有轮询机制,以避免生成过多事件。 广告注册监听器后,系统会异步发送初始状态。回调包含 exposed_percentage 参数,该参数是一个介于 0.0100.0 之间的浮点数。

如需查看示例用法,请参阅 MRAID v3 规范

MRAID 检测和初始化以及 MRAID_ENV 属性

该 SDK 符合 MRAID v3 规范中定义的初始化协议。

MRAID_ENV 对象中,SDK 不会发送 IDFAlimitAdTracking、应用 ID 或 COPPA(这些都是可选项)。它会在 MRAID_ENV 对象中提供所有必需的变量,包括 MRAID 版本、SDK 名称和 SDK 版本。

可听度衡量

引入了新事件 (audioVolumeChange),用于确定能否听到音频以及音量何时发生变化。

audioVolumeChange 事件只有一个参数:volume_percentage。此值是最大音频播放音量的百分比。这是一个介于 0.0100.0 之间的浮点数(不允许播放时为 0.0),如果无法确定音量,则为 null

如需查看示例用法,请参阅 MRAID v3 规范

mraid.getLocation()

由于不支持 mraid.getLocation(),因此始终返回 -1

mraid.unload()

此方法可随时调用,SDK 会通过关闭广告、取消分配资源,然后移除 WebView 或将其替换为其他文档或新广告来做出响应。

当广告素材调用 unload() 时,对于不同的广告素材类型,原生层会做出如下响应:

类型 unload() 行为
横幅广告 使用与当前广告相同的请求参数发出新的广告请求。
插页式广告 关闭插页式广告。

VPAID(视频播放器广告接口定义)

Google 移动广告 SDK 不支持 VPAID。mraid.supports('vpaid') 会返回 false。

mraid.useCustomClose()

mraid.useCustomClose() 可能不受支持,具体取决于格式和广告素材类型。

MRAID v2 实现详情

mraid.getVersion()

在广告素材加载之前,mraid.getVersion() 不会返回 2.0。当 mraid.getState() 返回 loading 时,请勿检查 MRAID 版本。

mraid.resize()

调用 mraid.resize() 时,系统会将原始横幅替换为横幅的屏幕截图图片。如果调整大小的广告未覆盖原始广告空间,这种情况会很明显。

调整大小的广告也不会遵循原始横幅框架。如果横幅广告放置在滚动视图中,则调整大小的广告不会随横幅广告滚动。

mraid.setResizeProperties()

mraid.setResizeProperties() 的所有调用都应包含完整的必需属性列表。如果调整大小属性无效,则会恢复为默认值,并且在使用有效参数再次调用 mraid.setResizeProperties() 之前,对 mraid.resize() 的所有后续调用都将失败。

mraid.getMaxSize()

mraid.getMaxSize() 应仅用于确定调整大小的广告的最大尺寸。如需确定可展开广告的尺寸,请使用 mraid.getScreenSize()

mraid.setOrientationProperties()

allowOrientationChange 属性设置为 true 后调用 mraid.setOrientationProperties() 时,设置 forceOrientation 属性不会执行任何操作。若要强制设定屏幕方向,广告素材应将 allowOrientationChange 设置为 false

mraid.isViewable()

如果某个视图遮盖了原本可见的广告,mraid.isViewable() 仍会返回 true。应用内容不得遮盖可见的广告。

mraid.getCurrentPosition()

当两段式展开式广告处于展开状态时,对第一段的 mraid.getCurrentPosition() 调用将返回屏幕的尺寸。

mraid.supports()

从 SDK 7.11.0 版开始,mraid.supports("storePicture")mraid.supports("calendar") 始终会返回 false。根据 MRAID v2 规范,广告素材应能够处理这些方法不可用的情况。

mraid.storePicture()

当 MRAID 广告素材调用 mraid.storePicture() 时,应用会自动请求保存图片的权限。