我这个页面是用户点击打卡按钮,调用wx.getLocation api, 然后弹出隐私协议弹窗。当用户点击拒绝的时候,现在有两种情况
1、如果拒绝之后调用了this.resolvePrivacyAuthorization({ event: 'disagree' }); 那么就会触发后续隐私api的调用,并且执行隐私api的fail回调;这种情况,wx.onNeedPrivacyAuthorization会持续监听,用户重复操作打卡按钮,也会继续弹除隐私协议弹窗;
2、如果拒绝之后不调用 this.resolvePrivacyAuthorization({ event: 'disagree' }); 那么就不会触发后续隐私api的调用,也就不会执行隐私api的fail回调;但是这样的话wx.onNeedPrivacyAuthorization就会中断监听,用户重复操作打卡按钮,不会继续弹除隐私协议弹窗;
可是我想要的效果是拒绝之后,wx.onNeedPrivacyAuthorization既能够继续监听,又不要执行相关api 的fail回调。该怎么实现?
export default {
data() {
return {
showAgreement: false,
resolvePrivacyAuthorization: null
};
},
computed: {},
methods: {
agree() {
this.showAgreement = false;
this.resolvePrivacyAuthorization({
buttonId: 'agree-btn',
event: 'agree'
});
},
refuse() {
this.showAgreement = false;
this.resolvePrivacyAuthorization({
event: 'disagree'
}); //如果这里不调用的话,用户再次点击打卡,就不执行wx.onNeedPrivacyAuthorization里的代码了,该怎么办?
}
},
onShow() {
if (wx.onNeedPrivacyAuthorization) {
wx.onNeedPrivacyAuthorization((resolve) => {
console.log(11, resolve);
this.showAgreement = true;
this.resolvePrivacyAuthorization = resolve;
console.log(this.showAgreement);
});
}
},
为啥要这样的效果呢?
先弹了图一,点了允许之后,onNeedPrivacyAuthorization才监听到,弹出图2
的确, console 里第一次时会打印错误信息, 后面拒绝时就不会有这个错误提示:
[渲染层错误] getPhoneNumber:fail privacy permission is not authorized,errno:104(env: macOS,mp,1.06.2307260; lib: 3.0.1)