search
开发文档
开发文档/小游戏开发/API/平台能力/隐私协议
隐私协议更新时间:2025-12-25 09:37:01

qg.privacyAgreementCompleted

基础信息说明

功能概述:开发者在每次游戏启动时通知小米平台,当前用户是否已同意隐私协议,同意后可开始游戏。

项目说明
版本要求框架版本号13070201开始支持本方法
前提条件游戏在冷启动/登录前展示隐私协议弹窗;配置文件mainfest.json中新增标记 {"policyType":"3"}
使用限制仅用于上报“用户是否已同意隐私协议”,且与 qg.getPrivacyAgreementState 协同使用,详情见下文中「与qg.getPrivacyAgreementState的协同」 部分
相关教程

配置文件mainfest.json中 policyType字段的说明:

参数名类型取值说明
policyTypestring3已添加游戏服务相关隐私协议

与 qg.getPrivacyAgreementState 的协同

qg.getPrivacyAgreementState 用于获取隐私协议状态,开发者无需在本地存储标记。典型调度顺序如下:

  1. 游戏启动 → 调用 qg.getPrivacyAgreementState。
  2. success 回调中根据 res.userHasAgreed 判断:
    1. 若 true:用户已授权,可直接进入登录流程(示例中的 doLogin())。
    2. 若 false:用户未授权,弹出隐私协议弹窗,引导用户授权。
  3. 用户同意后,必须调用 qg.privacyAgreementCompleted({ userHasAgreed: 1 }) 通知平台;若拒绝(0),必须退出游戏或返回上层平台。
  4. 等待 success/complete 回调后再继续 qg.login、qg.pay 等敏感操作。

示例代码

cocos游戏为例,在onLoad下参考以下代码逻辑,确保mainfest.json中添加配置了"policyType": "3"

onLoad() {
const doLogin = () => {
qg.login({
success: res => console.log("login Success:", res);
fail: err => console.log('login 接口调用失败,原因:', err)
})
}

// 获取用户是否已经同意过隐私协议
qg.getPrivacyAgreementState({
success: res => {
if (!res.userHasAgreed) {
let option = { userHasAgreed: 0 }
qg.showModal({
title: '隐私协议',
content: 'xxx隐私协议...',
showCancel: true,
cancelText: '拒绝',
confirmText: '同意',
success: modalRes => {
option.userHasAgreed = modalRes.confirm ? 1 : 0
// 通知小游戏宿主,用户已经完成隐私协议确认
if(qg.privacyAgreementCompleted){
qg.privacyAgreementCompleted(option)
}
if (modalRes.confirm) {
doLogin()
} else {
qg.exitApplication({})
}
},
fail: err => {
console.warn('showModal fail', err)
qg.exitApplication({})
}
})
} else {
doLogin()
}
},
fail: err => console.warn('getPrivacyAgreementState fail', err)
})
}

参数与返回值说明

qg.getPrivacyAgreementState(option)

属性名类型必填说明
successFunction入参 data,包含 userHasAgreed等
failFunction入参 err,含 errMsg/errCode 等
completeFunction成功或失败都会回调

示例代码

qg.getPrivacyAgreementState({
success:(data)=>{
// data.state: 1,
// data.message: 'success',
// data.userHasAgreed: true/false
console.log('success: ',e)
},
fail:()=>{
console.log('fail: ',)
},
complete:()=>{
console.log('complete: ',)
}
})

提示:若 getPrivacyAgreementState 返回用户未同意且无法拉起弹窗(如 showModal 失败),必须退出游戏或禁止进入后续环节,避免在未合规状态下调用登录/支付等能力。

参数说明

qg.privacyAgreementCompleted(option)

参数名类型默认值必填说明
userHasAgreedNumber-用户隐私协议状态:1 表示已同意;0 表示未同意/拒绝。该字段必须上报,通常由 qg.getPrivacyAgreementState 的结果与用户弹窗选择共同决定(如 option.userHasAgreed = res.confirm ? 1 : 0)。
successFunction-上报成功回调;入参 res(宿主透传对象,如 { state: 1, message: 'success' })。
failFunction-上报失败回调;入参 err(宿主透传对象,可能包含 errMsg/errCode 等字段)。
completeFunction-接口调用完成回调;无论成功/失败都会触发,入参与成功/失败一致。

回调结果说明

回调成功

典型返回举例:eg: { state: 1, message: 'success' },其中 state 为宿主回显的状态,message 为描述字段。

回调失败

当底层返回错误或网络异常时,适配层会调用 option.fail(err),err 对象通常包含:

参数名类型说明
errMsgString错误信息
errCodeNumber错误码

触发与阶段说明

阶段触发时机说明
展示隐私协议游戏冷启动时在 UI 中展示隐私协议,并等待用户明确选择
用户做出选择用户点击“同意/不同意”按钮记录用户当前选择,准备上报
必须调用上报接口每次启动 调用 qg.privacyAgreementCompleted(option)未上报或返回 userHasAgreed=0,会阻止登录、支付等敏感能力
成功回调 success平台确认接收上报此时可安全继续登录、支付等流程
失败回调 fail / 完成网络异常、宿主返回 errMsg 等在 fail 中进行兜底处理,必要时重试或提示用户

注意:若用户在设置中切换账号或重新启动游戏,需要再次调用该接口同步状态。

示例代码

const option = {
userHasAgreed: 1, // 1: 已同意,0: 未同意/拒绝
success: e => {
console.log('success: ', e) // => { state: 1, message: 'success' }
},
fail: e => {
console.log('fail: ', e)
},
complete: e => {
console.log('complete: ', e) // 成功时与 success 相同
}
}

qg.privacyAgreementCompleted(option)

// 当用户拒绝时(userHasAgreed = 0):
qg.privacyAgreementCompleted({
userHasAgreed: 0,
complete: e => {
console.log('用户拒绝隐私协议: ', e)
// 根据合规要求,此时应阻止登录/支付,并引导用户重新阅读隐私协议
}
})

注意事项

  • 强制调用:每次游戏启动后必须调用 qg.privacyAgreementCompleted。未调用或上报 userHasAgreed=0 将导致平台拒绝执行登录、支付等能力。
  • 重试策略:若 fail 返回,需提示用户或在安全场景下重试;不要在失败的情况下继续登录/支付。
上一篇:桌面图标
下一篇:推荐
文档内容是否有帮助?
有帮助
无帮助