我用的是Taro+React
大家都知道微信调整了隐私授权的方式,需要在9.15之前做出对应调整不然会让线上一些api会失效。具体可以看这个官方链接:https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/PrivacyAuthorize.html#%E4%B8%89%E3%80%81%E5%85%B6%E4%BB%96%E8%AF%B4%E6%98%8E
总体调试下来碰到的几个问题分享下(也是我踩过的坑):
1:低版本是否需要兼容
官方回答的是
所以只要判断下低版本不需要执行对应隐私api就可以了。
2:点击button会报错:privacy permission is not authorized or buttonId is wrong
按钮需要添加open-type='agreePrivacyAuthorization
其次是不要使用onClick去调用而是用onAgreePrivacyAuthorization
3:一定要确认是否关于隐私api是否添加到了小程序后台隐私设置里面
这是所有需要处理的api:https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/miniprogram-intro.html
4:关于如何封装是否需要每个页面都调用一次
需要,在每个设计到api的页面都要调用一次。我的流程是进入首页的时候会弹窗询问是否需要授权,如果拒绝就是在需要授权的api上点击的时候会弹出隐私弹窗。(注意一点:千万不要听产品或者业务说什么嫌麻烦影响流程在首页弹窗拒绝就不让使用小程序或者功能。比如说定位授权,用户拒绝授权就不让定位就可以了,不能影响其他功能的使用。)
5.关于使用onNeedPrivacyAuthorization这块,对于resovle的使用还是要使用官方案例demo2的写法,用new Set()然后add进去(注意要clear),这样写法的好处就是不会影响正常流程,点击同意后就会继续刚刚的功能流程。如果是let resolvePrivacyAuthorization = resolve的话就会需要点击两次。
6.全局的隐私检测是getPrivacySetting,监听页面功能api是onNeedPrivacyAuthorization,建议大家结合使用。
如果有其他问题或者哪里说的不对的地方欢迎评论区留言指教
再补充一点,如果事按照我这种taro+react函数式组件写法的需要注意一个场景,就是触发弹窗后点击拒绝然后进入下一页点击返回上一页。这时候就不会再触发隐私弹窗,需要用到didShow再次判断。
对了,补充一点就目前看来pc端(体验版)不会触发,只有正式版会弹