互动游戏是DCloud联合三方服务商为开发者提供新的广告场景增值服务。开发者在App中放置入口,用户点击入口参与权益化、趣味性的活动。通过观看激励视频广告加速获取权益。沉浸的游戏体验能够降低对广告的抵触心理,增加激励视频广告展示的同时有效提高广告收益。
共抽奖类、游戏类、养成类3种场景类型,开发者可根据自身情况选择活动类型:
活动分类 | 活动名称 | 发放奖励 | 活动周期 | 是否支持积分打通 |
抽奖 | 集碎片 | 多奖品 | 7天 | |
印钞机 | 现金 | 7天 | ||
扭蛋机 | 多奖品 | 7天 | ||
游戏 | 大富翁 | 现金 | 7天 | 支持 |
成语大赢家 | 现金 | 7天 | ||
合成招财猫 | 现金 | 7天 | ||
捕鱼达人 | 现金 | 长期 | 新增支持 | |
养成 | 福牛 | 现金 | 7天 | |
果园 | 水果 | 长期 | ||
农场 | 现金 | 30天 | ||
养鸡 | 现金 | 长期 | ||
走路赚 | 现金 | 7天 | 支持 |
注:如要选择对应的活动,请在创建互动游戏广告位时把对应的活动名称填入到广告位名称内,创建后不可修改,如需修改,请邮件联系uniad@dcloud.io
互动游戏的目的是吸引用户参与活动,引导用户观看广告,通过活动获取奖励,满足特定条件后需要向用户发放奖励。目前有两种奖励发放方式,一种是由DCloud联合三方服务商为开发者提供用户奖励线下代发;一种是由开发者对接App自身积分系统,将用户奖励转换为App积分,提高用户参与度和体验。
默认使用用户奖励线下代发服务,具体说明如下:
积分对接需要开发者业务系统与三方服务商的互动游戏进行对接,需要一定的开发工作量,请邮件联系uniad@dcloud.io
平台差异说明
App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快手小程序 | 京东小程序 |
---|---|---|---|---|---|---|---|---|
App 3.1.15+ | x | x | x | x | x | x | x | x |
开通配置广告
开通广告步骤:
uni.createInteractiveAd(options)
options
为 object 类型,属性如下:
属性名 | 类型 | 必填 | 描述 |
---|---|---|---|
adpid | string | 是 | 广告位 id |
provider | string | 是 | 服务商标识,即插件id |
userData | object | 否 | 对接App积分系统参数 |
provider
值:
值 | 描述 |
---|---|
BXM-AD | 互动游戏变现猫 |
广告组件默认是隐藏的,因此可以提前创建,以提前初始化组件。开发者可以在页面的 onReady 事件回调中创建广告实例,并在该页面的生命周期内重复调用该广告实例。
广告组件默认是隐藏的,开发者需要调用 CreateInteractiveAd.show() 进行显示。如果广告拉取失败或触发频率限制,CreateInteractiveAd.show() 方法会返回一个rejected Promise,开发者可自行监听错误信息
CreateInteractiveAd.show().catch((err) => {
console.error(err)
})
用户可以主动关闭广告。开发者不可控制广告组件的隐藏。
如果广告加载成功,通过 CreateInteractiveAd.onLoad() 注册的回调函数会执行,回调函数返回广告素材参数。
属性名 | 类型 | 描述 |
---|---|---|
imgUrl | string | 广告素材图片的url地址 |
CreateInteractiveAd.onLoad(res => {
console.log('图片素材地址', res.imgUrl);
console.log('广告加载成功');
})
HBuilder基座的测试广告位 adpid: 1042956255
(游戏); 1620839118
(抽奖); 1064042976
(养成)
示例代码
<template>
<view>
<image class="ad-icon" v-if="imgUrl" :src="imgUrl" @click="showInteractiveAd"></image>
</view>
</template>
<script>
export default {
data() {
return {
title: '互动游戏',
loading: false,
imgUrl: ""
}
},
onReady() {
this.adOption = {
adpid: '1042956255',
provider: 'BXM-AD'
};
// 创建广告实例
this.createInteractiveAd();
},
methods: {
createInteractiveAd() {
var interactiveAd = this.interactiveAd = uni.createInteractiveAd(this.adOption);
interactiveAd.onLoad((e) => {
this.loading = false;
this.imgUrl = e.imgUrl;
console.log("广告加载成功");
// 如果有广告图片素材, 通过 e.imgUrl 获取
});
interactiveAd.onClose(() => {
// 用户点击了关闭或返回键(仅Android有返回键)
console.log("广告关闭");
});
interactiveAd.onError((err) => {
this.loading = false;
console.log("广告加载失败");
});
// 广告实例创建成功后默认会执行一次 load,加载广告数据
// 如果界面有 "显示广告" 按钮,需要先禁用掉,防止用户点击,等待广告数据加载成功后在放开
this.loading = true;
},
showInteractiveAd() {
// 调用 interactiveAd.show(),如果数据正在加载中不会显示广告,加载成功后才显示
// 在数据没有加载成功时,需要防止用户频繁点击显示广告
if (this.loading == true) {
return
}
this.loading = true;
this.interactiveAd.show().then(() => {
this.loading = false;
});
}
},
onUnload() {
// 页面关闭后销毁实例
this.interactiveAd.destroy();
}
}
</script>
<style>
.ad-icon {
display: block;
width: 80px;
height: 80px;
margin: 10px;
}
</style>
Promise CreateInteractiveAd.load()
加载广告。
Promise CreateInteractiveAd.show()
显示广告。
CreateInteractiveAd.reportExposure()
场景入口曝光打点。
CreateInteractiveAd.destroy()
销毁广告实例。
CreateInteractiveAd.onLoad(function callback)
监听广告加载事件。
CreateInteractiveAd.offLoad(function callback)
取消监听广告加载事件
CreateInteractiveAd.onError(function callback)
监听错误事件。
CreateInteractiveAd.offError(function callback)
取消监听错误事件
adpid
secretKey
让开发者来验签请求来源简要描述:
该接口用于获取用户总积分数量;
开发者提供url用户查询积分
请求方式 GET
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appUserId | 是 | String | app用户Id |
appId | 是 | String | SSP后台注册的appId |
timestamp | 是 | String | 时间戳(自1970年起,精确到毫秒) |
sign | 是 | String | 签名,用于验证身份。按照按 secretKey + timestamp 的进行MD5加密(注意加密后字符串要转大写,不要加上“+”号) |
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
appUserId | String | app用户Id |
avatar | String | 用户头像 |
nickname | String | 用户昵称 |
amount | Long | 用户总积分 |
示例
{
"appUserId" : "dcloud",
"avatar": "https://xxx.yyy.com/xxxx.jpg",
"nickname": "jack",
"amount": 100
}
简要描述:
此接口用于操作用户积分数量,如增加、扣除; 请求参数放在body里,以JSON格式提交; 考虑到接口的安全,建议开发者采用IP白名单+签名的方式校验来源,以防备被第三方利用。
失败情况:
200
的情况;3
秒。开发者提供url用户查询积分
请求方式 POST
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appUserId | 是 | String | App用户Id(唯一标识) |
appId | 是 | String | SSP后台注册的appId |
operateType | 是 | Long | 操作类型:1.增加 2.扣除 |
amount | 是 | Long | 本次操作的积分值 |
timestamp | 是 | String | 时间戳(自1970年起,精确到毫秒) |
sign | 是 | String | 签名,用于验证身份。按照按 secretKey + timestamp 进行MD5加密(注意加密后字符串要转大写,不要加上“+”号) |
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
appUserId | String | App用户Id(唯一标识) |
status | int | 状态码:0. 处理失败 1. 处理成功 |
message | String | 失败原因 |
amount | Long | 操作后的用户总积分 |
返回结果示例
{
"appUserId": "dcloud",
"status": 1,
"amount": 100
}