Google 移动广告 SDK 现在已对 MRAID v3 提供 Beta 版支持,此支持基于对 MRAID v2 的现有支持,使广告客户能够向 Ad Manager 发布商投放 MRAID v3 广告素材。本指南在 MRAID v3 规范中阐明了不明确且有待解读的 MRAID 实现细节。其目标受众群体是 MRAID v3 广告素材作者。
前提条件
发布商必须正在运行:
- 适用于 iOS 7.30.0 或更高版本(适用于 MRAID v3)的 Google 移动广告 SDK
- 适用于 iOS 7.4.0 或更高版本(适用于 MRAID v2)的 Google 移动广告 SDK
实用入门信息
如果您不熟悉 MRAID,可以在 IAB MRAID 页面中了解详情。您还可以下载 MRAID v3 定义文档(其中提供了有关以下讨论的所有参数的详细信息)以及有关 MRAID v3 的 IAB 博文。
MRAID v3(Beta 版)实现详情
可见度 - visibilityChange 事件
此事件受支持,我们建议对新的 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.supports()
从 SDK 版本 7.11.0 开始,mraid.supports("storePicture")
和 mraid.supports("calendar")
始终返回 false
。根据 MRAID v2 规范,广告素材应能够处理这些方法不可用的情况。
mraid.storePicture()
当 MRAID 广告素材调用 mraid.storePicture()
时,应用会自动请求保存图片的权限。