Google 移动广告 SDK 现已推出 MRAID v3 的 Beta 版支持,该支持以现有的 MRAID v2 支持为基础构建,可让广告客户向 Ad Manager 发布商投放 MRAID v3 广告素材。本指南阐明了 MRAID v3 规范中不明确且容易产生歧义的 MRAID 实现细节。 本指南的目标受众是 MRAID v3 广告素材作者。
前提条件
发布商必须运行以下服务:
- Google Play 服务 15.0.0 或更高版本(适用于 MRAID v3)
- Google Play 服务 7.8 或更高版本(适用于 MRAID v2)
实用入门知识
如果您不熟悉 MRAID,可以访问 IAB MRAID 页面了解详情。您还可以下载 MRAID v3 定义 文档,其中详细介绍了下文讨论的所有参数, 以及 IAB 发布的有关 MRAID v3 的博文。
MRAID v3 (Beta 版) 实现细节
可见度 - exposureChange 事件
我们支持此事件,并建议您使用新的 exposureChange 事件的监听器,而不是已废弃的 viewableChange 事件。
mraid.isViewable() 方法也已废弃。不过,为了保持向后兼容性,我们仍支持这些已废弃的方法。
每当广告视图发生变化时,系统都会调度 exposureChange 事件定义。SDK 具有轮询机制,可避免生成过多事件。
广告注册监听器后,系统会异步发送初始状态。
回调包含 exposed_percentage 参数,该参数是一个介于 0.0 和 100.0 之间的浮点数
。
如需查看使用示例,请参阅 MRAID v3 规范 。
MRAID 检测和初始化以及 MRAID_ENV 属性
SDK 符合 MRAID v3 规范中定义的初始化协议。
在 MRAID_ENV 对象中,SDK 不会发送 IDFA、limitAdTracking、应用 ID 或 COPPA(这些都是可选的)。它会在 MRAID_ENV 对象中提供所有必需的变量,包括 MRAID 版本、SDK 名称和 SDK 版本。
可听度衡量
我们引入了一个新事件 (audioVolumeChange),用于识别音频是否可听以及音量何时发生变化。
audioVolumeChange 事件有一个参数:volume_percentage。该值是音频播放音量上限的百分比。它是一个
介于 0.0 和 100.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.resize() 的所有后续调用都会失败,直到使用有效参数再次调用 mraid.setResizeProperties() 为止。
mraid.getMaxSize()
mraid.getMaxSize() 仅应用于确定调整大小后的广告的最大尺寸。如需确定展开式广告的尺寸,请使用 mraid.getScreenSize()。
mraid.setOrientationProperties()
当调用 mraid.setOrientationProperties() 且 allowOrientationChange 属性设置为 true 时,设置 forceOrientation 属性不会执行任何操作。
想要强制设置屏幕方向的广告素材应将 allowOrientationChange 设置为 false。
mraid.isViewable()
如果视图覆盖了原本可见的广告,mraid.isViewable() 仍会返回 true。应用内容不应覆盖可见的广告。
mraid.getCurrentPosition()
当两部分展开式广告处于展开状态时,对第一部分调用 mraid.getCurrentPosition() 将返回屏幕尺寸。
mraid.storePicture()
如需让应用支持 mraid.storePicture(),该应用需要包含 android.permission.WRITE_EXTERNAL_STORAGE 权限。