uniapp 授权,用户拒绝之后重新调用
当用户点击拒绝时,会一直执行fail()函数,除非手动点击设置授权,这样很不方便最近项目中遇到这种情况,必须得让用户拥有好的体验
·
当用户点击拒绝时,会一直执行fail()函数,除非手动点击设置授权,这样很不方便
最近项目中遇到这种情况,必须得让用户拥有好的体验
下面来看代码,主要是调用几个API,就拿录音授权举个例子
//这个是写在点击事件里面的
let that = this
uni.authorize({
scope: 'scope.record',//这里选择scope.(录音、位置、用户信息...都可以)
success() { //1.1 允许授权
that.timer = setInterval(that.startTimer, 1000),//录音定时器
recorderManager.start()//开始录音
},
fail() { // 拒绝授权
uni.showModal({
content: '检测到您没打开录音功能权限,是否去设置打开?',
confirmText: "确认",
cancelText: '取消',
success: (res) => {
if (res.confirm) {
uni.openSetting({//opensetting是调起设置页面的
success: (res) => {
console.log(res.authSetting);
if(res.authSetting == true){//判断res.authsetting的值是true还是false
that.timer = setInterval(that.startTimer,1000),
recorderManager.start()
}else{
console.log("什么也不做");
}
}
})
} else {
console.log('取消');
return false;
}
}
})
return false;
}
})
这里面的弹窗提示
点击确认就会转到设置页面,之后可以打开权限,如果用户还是不打开,当然他还是用不了功能的
点击取消,也是没有权限,功能也无法执行的
这是设置页面
这个问题主要还是对API调用不清楚、不熟悉,多看一下官方的文档介绍
#uni.authorize(OBJECT)
提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。如果用户之前拒绝了授权,此接口会直接进入失败回调,一般搭配
uni.getSetting
和uni.openSetting
使用
#uni.openSetting(OBJECT)
调起客户端小程序设置界面,返回用户设置的操作结果。
文章仅限参考 如有错误请及时指出或补充
更多推荐
已为社区贡献7条内容
所有评论(0)