跳到主要内容

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​

属性类型默认值必填说明
behaviorIdnumber是行为标识,开放平台配置的行为 id
behaviorKeystring是行为 key,开放平台配置的行为标识,与任务配置完全一致(区分大小写)
addValuenumber是本次行为进度增量,必须为非负整数。行为结果上报填 1;数据增量上报填本次新增的正整数值(差值)
uuidstring条件必填用户 uuid,通过 mgtv.getUserProfile 获取。1.4.3 版本必传;1.4.4 及以上版本无需传入
ticketstring条件必填用户 ticket,通过 mgtv.getUserProfile 获取。1.4.3 版本必传;1.4.4 及以上版本无需传入
successfunction否接口调用成功的回调函数
failfunction否接口调用失败的回调函数
completefunction否接口调用结束的回调函数(调用成功、失败都会执行)

object.fail 回调函数​

参数

Object res​

属性类型说明
errMsgstring执行结果消息
errCodenumber错误代码

错误码​

错误码错误信息说明
6210行为配置不存在上报的行为配置不存在,请核查 behaviorId 与 behaviorKey 是否配置正确
6211行为关联的任务不存在行为未关联任何任务,请联系运营配置任务
5001正在处理中,请稍后再试同一行为正在处理中,请勿重复上报,稍后再试
400参数必传缺少接口参数对象,请传入 object 参数
400behaviorId 必须为正整数参数类型有误,请核查参数类型
400behaviorKey 必传缺少必填参数,请核查参数
400uuid 必传仅 1.4.3 版本会返回:缺少必填参数,请先通过 mgtv.getUserProfile 获取用户 uuid
400ticket 必传仅 1.4.3 版本会返回:缺少必填参数,请先通过 mgtv.getUserProfile 获取用户 ticket
400addValue 必须为非负整数参数类型有误,请核查参数类型
-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)