官方公告地址:
https://developers.weixin.qq.com/community/develop/doc/00042e3ef54940ce8520e38db61801
目前,开发工具或者体验版的小程序,调试基础库如果是2.33.0及以上就得适配了,线上版本9月15日之后生效,所以这之前需要尽快改完,发布一版,否则到了9月15号之后 线上就会生效报错了。
其实改起来也很简单,以下是实现步骤和代码:
1、首先看一下这个网址,里边包含涉及到的隐私的接口,这些接口都要适配一下
https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/miniprogram-intro.html
在以上接口用到的页面,需要画一下类似上边的弹窗(这个弹窗可以全局定义个组件,方便多个页面共用),然后里边蓝字可以点击后调用wx.openPrivacyContract(Object object)接口即可,会自动跳转打开隐私协议页面。
拒绝按钮可以加一个点击事件,然后在事件里这样写
同意按钮比较特殊,布局需要用button这样写,记得给button加一个Id
然后在handleAgreePrivacyAuthorization里就可以获取到点击事件,这样写
2、最后需要在onLoad或者onShow里加上以下监听代码,在这里边让自定义的隐私弹窗显示出来即可。
以上代码加上就可以了,如果业务逻辑用到了需要判断是否授权过,可以加上 wx.getPrivacySetting(Object object)去获取是否授权过,用不到可以不加这个判断。
请教一下楼主,同一个页面如果使用了不同的api(比如使用到【拍照】、【获取地理位置】),这些api都需要做这个处理吗?
目前我封装了一个全局组件
问题:授权一次就可以了吗?还是说每涉及一次隐私接口就要拉起弹窗授权一次?我的理解是:
1.用户进入小程序在app.onshow中调用wx.getPrivacySetting,如果用户没有授权则拉起弹窗用户授权,本地存储授权状态;
2.进入其他页面后涉及使用隐私api时先wx.getPrivacySetting获取是否授权,授权则不做反应继续往下调用那些隐私接口,反之拉起授权弹窗用户授权,弹窗关闭之后业务再进行下去再检查是否授权重复流程2。
疑问:如果用户未授权是不是每涉及一个隐私接口调用,都要引入这个组件弹窗,然后等用户同意?
博主,我的基础调试库是 【2.24.7】,没有超过【2.33.0】,还需要添加这一套流程吗?
有个问题 为什么我一直没有弹窗。我调用getPrivacySetting默认返回false
企业微信里面能调用这些新增的API吗
onNeedPrivacyAuthorization 直接放在app.js 里面吧,事件往上抛,抛到最后到app.js 里面,然后获取当前页,然后把当前页的 agreement dialog 展示出来
有不同的页面 但是都调用了相同的api 那第一个api授权后 之后的还需不要弹框呢
这一套流程倒是简单,但是还有些问题不清晰:
1、如果真的需要用户授权的时候,页面上的相关组件、onLoad中调用的api等,需不需要等用户同意之后开发者手动的重新渲染和调用?
2、onNeedPrivacyAuthorization返回的resolve,上报的时候应该是异步的,会不会道之上报之后直接调用相关api还是没有权限?开发者需要轮训getPrivacySetting返回的是否授权过?
3、对于应用场景复杂的程序,不同场景多个启动页面,都要处理授权和重新渲染、调用逻辑,工作量太大了
4、还有就是用户同意授权是通过按钮触发,开发者是不是可以把弹窗两个按钮都用agreePrivacyAuthorization,甚至整个弹窗都用这个按钮覆盖着,用户点哪里都是同意?
补充下,获取微信昵称组件,无法触发 onNeedPrivacyAuthorization,需要使用 wx.requirePrivacyAuthorize 来处理