根据工业和信息化部关于开展APP侵害用户权益专项整治要求,App 提交到应用市场必须满足条件:应用启动运行时需弹出隐私政策协议,说明应用采集用户数据。我们上架多端 APP 到应用市场时,还需要完成隐私弹窗这一关键配置。
多端框架为开发者提供了即配即用的隐私弹窗,只需要简单的配置就可以轻松完成「隐私弹窗」的实现;但如果你已经通过代码自己实现了「隐私弹窗」,不需要用框架提供的,可以直接跳过本节学习。
本节课带大家详细了解多端框架自带隐私弹窗配置的细节。
一、框架自带弹窗
通过模板配置后的「隐私弹窗」如下图所示:
正确配置的弹窗的展示和确认规则如下:
- 用户同意的信息保存在 APP 本地,不进行联网通信。
- 如果用户不同意,则 APP 会自动退出。
- 未同意时,每次打开 APP 都会展示弹窗;已同意则不会展示弹窗。
- 初始安装 APP 或者卸载重装 APP 都会使弹窗变为未同意状态。
二、配置隐私弹窗
如果你确认使用多端框架自带的隐私弹窗,则需要执行几个简单的步骤,我们分别来演示:
1.首先,在 project.miniapp.json 中打开隐私提示框开关,Android 和 iOS 需要分别设置打开。
2.在项目目录中,创建一个 json 文件用于配置隐私弹窗相关信息,在这里我们的名字为 miniapp.privacy.json,在文件中,我们将配置隐私弹窗里的内容和样式信息。
配置的结构如下:
{
"title": "隐私政策协议", // 隐私弹窗的标题
"confirm": "同意并接受", // 隐私弹窗的同意按钮文本
"cancel": "暂不同意", // 隐私弹窗的不同意按钮文本
"message": "请你务必审慎阅读、充分理解“__a__”条款,如果你同意,请点击下面按钮开始接受我们的服务。",
"messageLinks": { // message 里的链接占位 "__a__": { // 这里的 key 值对应 message 里的同名位置
"text": "《服务协议》", // 位置上的文本
"url": "https://dev.weixin.qq.com/docs/donut/", // 点击文本后跳转的 URL 链接
"showExternal": true, // true 表示使用浏览器打开,false 表示使用内置浏览器打开,默认为 false
}
},
"styles": { // 隐私弹窗样式合集,每个位置的样式
"borderRadius": 16, // 圆角
"backgroundColor": "#ffffff", // 背景颜色
"showLine": false, // 是否显示按钮切割线
"width": 300, // 宽度
"height": 500, // 高度
"top": 25, // 距离屏幕顶部的距离
"left": 50 // 距离屏幕左侧的距离
"title": { // 隐私弹窗标题
"color": "#111111", // 字体颜色
"top": 25, // 距离弹窗顶部的距离
"left": 50, // 距离弹窗左侧的距离
"width": 100, // 宽度
"height": 50, // 高度
"backgroundColor": "#ffffff", // 背景颜色
"borderRadius": 18 // 圆角
},
"message": {}, // 隐私弹窗内容,配置同 title
"confirm": {}, // 同意按钮,配置同 title
"cancel": {} // 不同意按钮,配置同 title
}
}
如果你希望的弹窗效果无法使用简单的 style 样式配置,框架还支持自定义「弹窗背景图」和「按钮背景图」。
3.在 project.miniapp.json 中,隐私弹窗位置,配置 privacy template 文件路径,路径相对于 project.miniapp.json 文件所在位置,在上面的步骤中,路径配置应该如图所示:
如果你有自定义「弹窗背景图」和「按钮背景图」的需求,可以在相应位置中配置图片所在位置。(需要注意:安卓中如果没有设置width/height, 图片的大小将撑大弹窗和按钮的大小。如果图片尺寸有问题,建议同时设置 width/height)
三、Android 浏览模式配置
浏览模式指的是,用户不同意隐私政策的情况下不会退出应用,而是可继续访问应用,但不可使用 openSDK 相关微信能力,例如微信登录等;开发者也需注意,在业务上实现禁用用户在浏览模式下去调用个人信息相关的接口能力。
我们可以通过多端框架的两个 API 来实现这一效果:
- wx.miniapp.getPrivacySetting:查询「用户是否已经同意隐私协议」
- wx.miniapp.agreePrivacyAuthorization:同意隐私协议
当你计划支持浏览模式时,APP 就不能在启动时就弹出隐私弹窗了,所以我们需要自己实现隐私弹窗,并控制弹窗的展示时机。
- 当 APP 启动时,调用 wx.miniapp.getPrivacySetting 检查用户是否已经同意隐私协议。
- 如果用户同意了隐私协议,则就不是浏览模式,进入正常业务逻辑即可。
- 如果用户未同意隐私协议,则当前是浏览模式,给用户展示只能浏览的内容。
- 当用户触发登录或者一些需要隐私信息的功能时,弹窗自己实现的隐私弹窗给用户。
- 用户点击同意按钮时,调用 wx.miniapp.agreePrivacyAuthorization 标记为同意,然后再走一遍第一步,就会得到用户已经同意的结果了。
- 用户点击不同意按钮时,继续展示只浏览内容。
四、撤销隐私弹窗同意
部分应用市场会规定:应用需要提供撤销用户隐私同意配置的能力。
框架提供了 wx.miniapp.revokePrivacySetting 接口用于撤销隐私弹窗授权信息,恢复成需要重新授权的状态。
使用 revokePrivacySetting 后,调用 wx.miniapp.getPrivacySetting 检查用户隐私设置会得到未同意的结果。
如果你使用的时多端自带的原生隐私弹窗,则需要再 revokePrivacySetting 后自行关闭应用,否则弹窗不会自动弹出(只在启动时弹出)。
关闭应用的接口为:wx.miniapp.closeApp | 微信开放文档
如果你使用了自己代码实现的隐私弹窗,则根据业务情况自行处理取消隐私授权后的逻辑。