小游戏隐私权限自查及开发指引
自查内容
确认游戏中是否一定需要获取并使用以下权限:
若所有权限都不需要使用:游戏进入时可直接不出隐私协议弹窗
有需要使用的权限:列明所需的权限及该权限的用途(该项需要研发给到渠道运营,帮助其填写vivo开平上的隐私协议内容)
说明: 1)如果评估该项权限是非必要的,建议不要进行申请,从而可以实现完全不出隐私弹窗的效果
2)如果该项权限是必要的,建议在实际需要该项权限时再发起请求,不要在游戏一开始就统一请求,会影响游客模式效率
说明:快游戏联盟的包适用“联盟标准接口”这一栏;vivo渠道的包适用“原有接口”这一栏
用户信息类型 | 联盟标准接口 | 原有接 |
---|---|---|
昵称、头像 | qg.login (未隐私授权仅返回token) | qg.getAccountInfo、qg.getUserInfo |
位置信息 | qg.getLocation、qg.subscribeLocation、qg.unsubscribeLocation | qg.getLocation、qg.subscribeLocation、qg.unsubscribeLocation |
选中的照片或视频信息 | qg.chooseImage | qg.takePhoto、qg.pickImage |
麦克风 | qg.startRecord | RecorderManager.start |
相册(仅写入)权限 | qg.saveImageToPhotosAlbum | qg.saveToPhotoAlbum |
加速传感器 | qg.startAccelerometer、qg.stopAccelerometer、qg.onAccelerometerChange、qg.offAccelerometerChange | qg.subscribeAccelerometer、qg.unsubscribeAccelerometer |
磁场传感器(罗盘) | qg.startCompass、qg.stopCompass、qg.onCompassChange、qg.offCompassChange | qg.subscribeCompass、qg.unsubscribeCompass |
方向传感器 | qg.startDevicemotionListening、qg.stopDevicemotionListening、qg.onDeviceMotionChange、qg.offDeviceMotionChange | 无 |
陀螺仪传感器 | qg.startGyroscope、qg.stopGyroscope、qg.offGyroscopeChange、qg.onGyroscopeChange | 无 |
剪切板 | qg.setClipboardData、qg.getClipboardData | qg.setClipboardData、qg.getClipboardData |
自查工具
调试器新增 隐私策略本地开发测试配置
为方便cp开发调试隐私策略效果,调试器配合提供新的配置入口,如下所示。开发者根据实际配置信息,在调试器上选择进行对应状态策略选择,再开启调试。
默认关闭 | 打开开关后 | 出现配置弹框 对应状态1 | 对应状态2 | 对应状态3 |
---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
当选择对应状态1
保持现有逻辑,弹出自有隐私弹框;
当选择对应状态2
运行过程中,检测到超限收集隐私信息,则会出现toast提醒,则表示超限收集,需要整改,或做好兼容措施保证游戏正常运行。如下图所示:

当选择对应状态3
运行过程中,检测到超限收集隐私信息,则会出现toast提醒,需要整改,或做好兼容措施保证游戏正常运行。图示效果同上。
开发指引
C端隐私交互
该弹窗由平台统一实现,点击文字链接后即可查看渠道运营在vivo开平上完成的隐私协议内容。一定要记得把游戏中自己开发的隐私协议弹窗相关的代码逻辑删除掉,不然用户侧会弹出两个隐私协议弹窗。
说明:需要渠道运营先按前文说明在vivo开平进行了隐私协议的配置后,才可以看到以下弹窗。

若使用到隐私政策声明的接口
需要兼容用户拒绝授权信息的情况,避免报错;如:getAccountInfo
if (qg.getAccountInfo){
qg.getAccountInfo({
appKey: "24030c****dc58a8df8785",
appSecret:"94dc184*****7242c633350e4",
success(res) {
console.log("getAccountInfo success", res)
},
fail(res) {
console.log("getAccountInfo fail", res.errCode, res.errMsg)
if (res.errCode == 700) {
//todo
} else if (res.errCode == 701) {
//todo
}
}
})
}
错误码说明
errCode | errMsg | 错误原因 |
---|---|---|
700 | permission not agreed | 权限被拒绝 |
701 | permission exceeded | 未在开平声明该项用户隐私信息类型的使用 |
注意:关于qg.login的接口,如果仅为了获取token来换最终的openId,则不需要声明在隐私权限中,token默认返回。
示例:
qg.login({
success: function (res) {
var data = JSON.stringify(res);
// token会直接返回给cp
console.log(data.token);
},
fail: function (res) {
console.log(JSON.stringify(res));
},
});
通过登录token获取用户信息 游戏中调用登录接口后,小游戏引擎会返回一个Token给CP,CP可以调用此接口获取用户信息。 注:未在隐私协议中的声明获取【图像、昵称】信息类型的,cp根据token仅获取到openId,图像昵称等信息则不会返回