试玩广告和交互式广告
Deliver interactive playable ads through Unity Exchange.
试玩广告是 Unity Exchange 上第二受欢迎的广告类型。由于所有的 Unity 广告库存均为移动应用内广告,因此大部分都支持试玩广告。
MRAID
移动富媒体广告接口定义 (MRAID) 是在移动应用中投放移动富媒体广告的通用 API。MRAID 让广告开发者可以使用通用代码设计出能够在符合 MRAID 标准的系统中运行的交互式广告。MRAID 可以控制广告在应用中的交互方式。
识别和初始化
为确保您的广告与 Unity MRAID 接口兼容,请执行以下操作:
- 在引用任何 MRAID 函数之前,尽早在广告代码中包含 MRAID 脚本标签 (
<script src="mraid.js"></script>
),将广告标识为符合 MRAID 标准。
- 使用 函数监测 MRAID 状态从"loading"变为"ready"的情况。
- 在展示广告之前使用 方法验证"ready"状态。这样做可以防止时序问题,例如在注册广告之前就触发就绪事件。
function showMyAd() {
// Ad content
}
if (mraid.getState() === ‘loading') {
mraid.addEventListener(‘ready', showMyAd);
} else {
showMyAd();
}
访问 对象可以在初始化之前验证您需要的任何其他信息。此变量附加到窗口对象,并包含以下属性:
属性
| 类型
| 示例
| 描述
|
---|
| 字符串 | | 实现 MRAID 接口的版本。 |
| 字符串 | | 运行 Web 视图的 SDK 名称。 |
| 字符串 | | 运行 Web 视图的 SDK 版本。 |
| 字符串 | "com.unity3d.ads.example"
| 运行广告的应用程序的包名或应用程序 ID。 |
| 布尔值 | | 表示启用 Limit Ad Tracking(限制广告追踪), 表示禁用。 |
| 布尔值 | | |
如需了解如何识别和初始化 MRAID 功能的更多信息,请参阅 IAB 文档。
事件
广告必须注册事件监听器才可以接收以下事件。如需了解更多信息,请参阅 和 方法。
error
客户端无法执行广告调用的方法(函数)时,便会触发此事件。
error(message: string, action: string): void
参数
| 类型
| 描述
|
---|
| 字符串 | 错误描述。 |
| 字符串 | 触发错误时调用的 MRAID 操作的名称。 |
ready
在初始化完成时触发此事件。
sizeChange
只要广告容器尺寸发生变化(例如,随设备方向变化而变化),便会触发此事件。
sizeChange(width: number, height: number)
stateChange
只要广告容器的状态发生变化,便会触发此事件。
stateChange(state: string)
exposureChange
只要广告的曝光发生变化,便会触发此事件。示例包括:
- 广告展示时。
- 广告关闭时。
- 应用程序有前景或背景时。
- 广告容器的曝光界面被更改时(例如,用户打开隐私设置)。
exposureChange(exposedPercentage: number, visibleRectangle: Rectangle | null, occlusionRectangles: Rectangle[] | null)
参数
| 类型
| 描述
|
---|
| 数字 | |
| | 广告容器的可见部分,格式为 。如果完全不可见,则返回 。 |
| | 一个描述 任何不可见部分的矩形数组,如果整个矩形可见,则为 。数组中的每个遮挡矩形的格式为 。 |
audioVolumeChange
只要设备的音量发生变化,便会触发此事件。
audioVolumeChange(volumePercentage: number): void
viewableChange(已弃用)
此事件在 MRAID 3.0 中已弃用。但是,Unity 仍然支持它以保持向后兼容性。
只要广告的可视性发生变化,便会触发此事件。示例包括:
- 广告展示时。
- 广告关闭时。
- 应用程序有前景或背景时。
viewableChange(viewable: boolean): void
支持的方法
Unity 支持以下 MRAID 方法:
addEventListener
使用此方法可将特定处理程序函数订阅到特定事件。多个监听器可以订阅到特定事件,单个监听器可以处理多个事件。
addEventListener(event: string, listener: function): void
参数
| 类型
| 描述
|
---|
| 字符串 | 要监听的事件名称。如需查看完整列表,请参阅有关事件的部分。 |
| 对象 | 触发事件时要执行的函数。 |
close
使用此方法可降级广告容器的状态。由于 Unity 目前不同时支持 和 方法,因此该方法只能将广告从默认状态更改为隐藏状态。
getCurrentAppOrientation
使用此方法可向设备查询应用的当前方向。
getCurrentAppOrientation(): { orientation: string, locked: boolean }
返回值
值
| 描述
|
---|
| |
| 一个布尔值,指示方向是否锁定在其当前位置,其中 true 指示方向已锁定。锁定方向后不支持 中的 属性。 |
getCurrentPosition
使用此方法可返回广告视图的当前位置和大小(采用与密度无关的像素为单位)。
getCurrentPosition():JavaScriptObject
返回值
{x: number, y: number, width: number, height: number}
值
| 描述
|
---|
| |
| |
| 容器的当前宽度(以像素为单位)。 |
| 容器的当前高度(以像素为单位)。 |
getDefaultPosition
使用此方法可返回默认广告视图的位置和大小(采用与密度无关的像素为单位,不管调用视图处于什么状态)。
getDefaultPosition():JavaScriptObject
返回值
{x: number, y: number, width: number, height: number}
值
| 描述
|
---|
| |
| |
| 容器的当前宽度(以像素为单位)。 |
| 容器的当前高度(以像素为单位)。 |
getMaxSize
由于 Unity 不支持 和 方法,因此该方法始终返回广告容器的最大大小(采用与密度无关的像素宽度和高度)。全屏插页式广告的返回值始终是全屏尺寸。
getMaxSize():JavaScriptObject
返回值
{width: number, height: number}
值
| 描述
|
---|
| 容器的当前宽度(以像素为单位)。 |
| 容器的当前高度(以像素为单位)。 |
getplacementtype
此方法返回广告位的类型,这可能会影响广告素材的行为。
getplacementtype():string
返回值
getScreenSize
此方法根据当前方向返回运行广告的设备的实际像素宽度和高度(采用与密度无关的像素为单位)。
getScreenSize():JavaScriptObject
返回值
{width: number, height: number}
值
| 描述
|
---|
| 屏幕尺寸的最大宽度(单位:像素)。 |
| 屏幕尺寸的最大高度(单位:像素)。 |
getState
此方法返回广告容器的当前状态。因为 Unity 不支持 和 方法,所以广告状态始终不会返回 或 值。
返回值
值
| 描述
|
---|
| 指示广告容器处于其默认可见状态。 |
| 表示广告容器已隐藏。 |
| 表示广告容器正在加载。 |
getVersion
此方法返回 Unity 支持的 MRAID 接口版本,可让出价者在展示前确认其基本功能。
返回值
isViewable(已弃用)
此事件已弃用。但是,Unity 仍然支持它以保持向后兼容性。
此方法返回广告容器当前是在屏幕上还是在屏幕外。
返回值
值
| 描述
|
---|
| 容器在屏幕上并且可见。 |
| 容器在屏幕外并且不可见。 |
open
此方法在应用程序中显示一个加载外部 URL 的嵌入式浏览器窗口。在不允许嵌入浏览器的设备平台上,此方法使用外部 URL 调用原生浏览器。
参数
removeEventListener
使用此方法可取消订阅特定事件的特定处理程序方法。当不再使用事件监听器时,应始终将其移除以避免错误。
removeEventListner(event: string, listener: fuction: void)
参数
supports
此方法返回请求设备是否支持特定功能。
supports(feature:string):boolean
参数
返回值
unload
此方法通知主机不应再向用户展示广告。如果广告遇到导致其无法正确展示的错误或运行异常时,请使用此方法。
不支持的方法
Unity 不支持以下方法:
故障排除
如果您收到类似以下示例的 ,可能表示 MRAID 接口尚不可用,或者广告素材未能包含 脚本标签,因此从未附加该接口。
示例
Uncaught TypeError: Cannot read property 'getVersion' of undefined.
如果您尝试在不包含 脚本标签的情况下调用 方法,则会发生此错误。要修正此问题,请先在代码中较靠前的位置添加脚本标签,然后再引用 MRAID 函数。