mgtv.reportBehaviorTask(Object object)
信息
框架版本 1.4.3 开始支持,其中框架版本通过 mgtv.getDeviceInfo()(同步接口)返回对象的 frameworkVersion 字段获取。
上报游戏行为完成事件,用于渠道导流场景的行为任务进度更新。
该接口需在真机上调试。开发者工具暂不支持,请使用真机调试进行联调验证。
上报时,1.4.3 版本需先通过 mgtv.getUserProfile 授权获取用户
uuid与ticket并传入;为了减少授权的步骤,1.4.4 及以上版本无需传入uuid、ticket,但需做好兼容处理(兼容写法见示例代码)。完整接入流程请见:游戏行为上报接入指南
参数
object参数为必传参数,调用时必须传入接口参数对象。
Object object
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| behaviorId | number | 是 | 行为标识,开放平台配置的行为 id | |
| behaviorKey | string | 是 | 行为 key,开放平台配置的行为标识,与任务配置完全一致(区分大小写) | |
| addValue | number | 是 | 本次行为进度增量,必须为非负整数。行为结果上报填 1;数据增量上报填本次新增的正整数值(差值) | |
| uuid | string | 条件必填 | 用户 uuid,通过 mgtv.getUserProfile 获取。1.4.3 版本必传;1.4.4 及以上版本无需传入 | |
| ticket | string | 条件必填 | 用户 ticket,通过 mgtv.getUserProfile 获取。1.4.3 版本必传;1.4.4 及以上版本无需传入 | |
| success | function | 否 | 接口调用成功的回调函数 | |
| fail | function | 否 | 接口调用失败的回调函数 | |
| complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
object.fail 回调函数
参数
Object res
| 属性 | 类型 | 说明 |
|---|---|---|
| errMsg | string | 执行结果消息 |
| errCode | number | 错误代码 |
错误码
| 错误码 | 错误信息 | 说明 |
|---|---|---|
| 6210 | 行为配置不存在 | 上报的行为配置不存在,请核查 behaviorId 与 behaviorKey 是否配置正确 |
| 6211 | 行为关联的任务不存在 | 行为未关联任何任务,请联系运营配置任务 |
| 5001 | 正在处理中,请稍后再试 | 同一行为正在处理中,请勿重复上报,稍后再试 |
| 400 | 参数必传 | 缺少接口参数对象,请传入 object 参数 |
| 400 | behaviorId 必须为正整数 | 参数类型有误,请核查参数类型 |
| 400 | behaviorKey 必传 | 缺少必填参数,请核查参数 |
| 400 | uuid 必传 | 仅 1.4.3 版本会返回:缺少必填参数,请先通过 mgtv.getUserProfile 获取用户 uuid |
| 400 | ticket 必传 | 仅 1.4.3 版本会返回:缺少必填参数,请先通过 mgtv.getUserProfile 获取用户 ticket |
| 400 | addValue 必须为非负整数 | 参数类型有误,请核查参数类型 |
| -1 | 网络异常 |
示例代码
// 版本比较:a > b 返回 1,a === b 返回 0,a < b 返回 -1
function compareVersion(a, b) {
const arrA = String(a).split('.').map(Number)
const arrB = String(b).split('.').map(Number)
const len = Math.max(arrA.length, arrB.length)
for (let i = 0; i < len; i++) {
const x = arrA[i] || 0
const y = arrB[i] || 0
if (x > y) return 1
if (x < y) return -1
}
return 0
}
// CP 自行封装的接口:兼容处理不同框架版本的上报逻辑
function cpReportBehaviorTask(behaviorId, behaviorKey, addValue) {
// 1. getDeviceInfo 为同步接口,直接获取 frameworkVersion
const deviceInfo = mgtv.getDeviceInfo()
const frameworkVersion = deviceInfo.frameworkVersion
// 仅 frameworkVersion >= 1.4.3 支持该接口
if (compareVersion(frameworkVersion, '1.4.3') < 0) {
console.log('当前框架版本不支持 reportBehaviorTask,请升级到 1.4.3 及以上')
return
}
// 2. 按版本分支:1.4.3 需授权获取 uuid、ticket;1.4.4 及以上无需授权、减少授权步骤
if (compareVersion(frameworkVersion, '1.4.4') < 0) {
// 1.4.3 版本:需先通过 getUserProfile 授权获取 uuid、ticket 并传入
mgtv.getUserProfile({
success(userRes) {
const { uuid, ticket } = userRes.data
doReport(behaviorId, behaviorKey, addValue, uuid, ticket)
},
fail(userRes) {
console.log('获取用户信息失败', userRes)
}
})
} else {
// 1.4.4 及以上版本:无需传入 uuid、ticket(已省去授权步骤)
doReport(behaviorId, behaviorKey, addValue)
}
}
// 实际调用 mgtv.reportBehaviorTask 上报
// 兼容处理:仅当 uuid、ticket 存在时才传入,从而同时适配 1.4.3 与 1.4.4+ 两种版本
function doReport(behaviorId, behaviorKey, addValue, uuid, ticket) {
const params = {
behaviorId,
behaviorKey,
addValue,
success(res) {
console.log('行为上报成功', res)
},
fail(res) {
console.log('行为上报失败', res)
}
}
if (uuid && ticket) {
params.uuid = uuid
params.ticket = ticket
}
// 判断接口是否存在,避免在不支持的环境下调用报错
if (mgtv.reportBehaviorTask) {
mgtv.reportBehaviorTask(params)
}
}
// cp 执行相关逻辑上报
cpReportBehaviorTask(7, 'game_addexp_01', 1)