隐私协议更新时间:2025-12-25 09:37:01
qg.privacyAgreementCompleted
基础信息说明
功能概述:开发者在每次游戏启动时通知小米平台,当前用户是否已同意隐私协议,同意后可开始游戏。
| 项目 | 说明 |
| 版本要求 | 框架版本号13070201开始支持本方法 |
| 前提条件 | 游戏在冷启动/登录前展示隐私协议弹窗;配置文件mainfest.json中新增标记 {"policyType":"3"} |
| 使用限制 | 仅用于上报“用户是否已同意隐私协议”,且与 qg.getPrivacyAgreementState 协同使用,详情见下文中「与qg.getPrivacyAgreementState的协同」 部分 |
| 相关教程 | 无 |
配置文件mainfest.json中 policyType字段的说明:
| 参数名 | 类型 | 取值 | 说明 |
| policyType | string | 3 | 已添加游戏服务相关隐私协议 |
与 qg.getPrivacyAgreementState 的协同
qg.getPrivacyAgreementState 用于获取隐私协议状态,开发者无需在本地存储标记。典型调度顺序如下:
- 游戏启动 → 调用 qg.getPrivacyAgreementState。
- success 回调中根据 res.userHasAgreed 判断:
- 若 true:用户已授权,可直接进入登录流程(示例中的 doLogin())。
- 若 false:用户未授权,弹出隐私协议弹窗,引导用户授权。
- 用户同意后,必须调用 qg.privacyAgreementCompleted({ userHasAgreed: 1 }) 通知平台;若拒绝(0),必须退出游戏或返回上层平台。
- 等待 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)
| 属性名 | 类型 | 必填 | 说明 |
| success | Function | 否 | 入参 data,包含 userHasAgreed等 |
| fail | Function | 否 | 入参 err,含 errMsg/errCode 等 |
| complete | Function | 否 | 成功或失败都会回调 |
示例代码
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)
| 参数名 | 类型 | 默认值 | 必填 | 说明 |
| userHasAgreed | Number | - | 是 | 用户隐私协议状态:1 表示已同意;0 表示未同意/拒绝。该字段必须上报,通常由 qg.getPrivacyAgreementState 的结果与用户弹窗选择共同决定(如 option.userHasAgreed = res.confirm ? 1 : 0)。 |
| success | Function | - | 否 | 上报成功回调;入参 res(宿主透传对象,如 { state: 1, message: 'success' })。 |
| fail | Function | - | 否 | 上报失败回调;入参 err(宿主透传对象,可能包含 errMsg/errCode 等字段)。 |
| complete | Function | - | 否 | 接口调用完成回调;无论成功/失败都会触发,入参与成功/失败一致。 |
回调结果说明
回调成功
典型返回举例:eg: { state: 1, message: 'success' },其中 state 为宿主回显的状态,message 为描述字段。
回调失败
当底层返回错误或网络异常时,适配层会调用 option.fail(err),err 对象通常包含:
| 参数名 | 类型 | 说明 |
| errMsg | String | 错误信息 |
| errCode | Number | 错误码 |
触发与阶段说明
| 阶段 | 触发时机 | 说明 |
| 展示隐私协议 | 游戏冷启动时 | 在 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 返回,需提示用户或在安全场景下重试;不要在失败的情况下继续登录/支付。
上一篇:桌面图标
下一篇:推荐
文档内容是否有帮助?
有帮助
无帮助