在微信小程序里,有很多需要用户授权的功能,比如读取通讯地址,读取地理位置,读取录音等等,可能是为了提升用户体验,微信设定是只要用户拒绝了授权,那么以后都不会再出现授权窗口。。。。
解决办法,调用 openSetting。以通讯地址授权为例:
// 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.address" 这个 scope
wx.getSetting({
success(res) {
if (!res.authSetting['scope.address']) {
wx.authorize({
scope: 'scope.address',
success () {
// 用户已经同意小程序读取通讯地址,后续调用 wx.address接口不会弹窗询问
}
fail () {
// 用户拒绝了授权,弹出一个自定义层,显示授权按钮:
//<button open-type="openSetting" bindopensetting="callback">打开设置页</button>
}
})
}
}
}
当用户授权后返回小程序时,可以在onShow里增加处理,关闭授权提示信息。
有话要说