想问一下,wx.getPrivacySetting和wx.onNeedPrivacyAuthorization配合起来使用的怎么搞?
我现在的情况是,
1.在onLoad里面,先判断了 wx.getPrivacySetting,调用之后,如果res.needAuthorization为true,就调用了wx.saveImageToPhotosAlbum()方法,这个方法会触发到用户隐私那个授权要求,然后继续写了wx.onNeedPrivacyAuthorization事件,因为调用了wx.saveImageToPhotosAlbum()方法,所以wx.onNeedPrivacyAuthorization监听到了,然后我弹出了自己写的同意隐私保护的弹窗【代码见图1】,
2.【图2是我自己写的隐私弹窗】点击了同意按钮之后,<button class="btn agree " id="agree-btn" open-type="agreePrivacyAuthorization" bindagreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button>,触发了this.resolvePrivacyAuthorization({})方法【见图3同意之后逻辑】,但是这时候弹出了一个我没写过的弹窗【见图4】,让我授权具体接口的功能,
3.我现在的问题是,我第一次同意了隐私协议不是已经告诉过平台用户同意了吗,怎么小程序还自动弹出一个授权具体接口功能的弹窗嘞,求大神解答
图1
图2
图3 同意隐私协议之后
图4 允许具体接口使用的弹窗
wx.getPrivacySetting拿掉吧,直接用wx.onNeedPrivacyAuthorization就行了
二选一。
在onLoad里面,先判断了 wx.getPrivacySetting,调用之后,如果res.needAuthorization为true(表示需要授权),此时不要继续原来的业务。直接弹框隐私弹框,用户同意后,所有隐私接口都同意授权了。后续直接调用隐私接口就行。
-----------------
而且也不需要每个页面都加。你可以试试在登录流程和登录后的各个tab页面用这个逻辑。主动弹框。后续各个子页面就不用处理了
wx.onNeedPrivacyAuthorization的触发是:某用户主动触发了隐私接口,此时官方如果判断用户没有授权过。就暂停隐私接口响应,先去调用触发页面JS里的wx.onNeedPrivacyAuthorization方法。如果有,这个逻辑里应该是弹框。如果页面没有这个方法,隐私接口不会响应了。