uniapp 授权,用户拒绝之后重新调用

本文探讨了在项目中遇到的用户授权问题,当用户拒绝授权时,会导致功能无法正常使用。通过分析uni.authorize和uni.openSetting的API,提出了在用户拒绝授权时显示弹窗引导用户至设置页面。如果用户仍不开启权限,则功能将无法执行,强调了提供良好用户体验的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当用户点击拒绝时,会一直执行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.getSettinguni.openSetting使用

 

#uni.openSetting(OBJECT)

调起客户端小程序设置界面,返回用户设置的操作结果。

 

 文章仅限参考 如有错误请及时指出或补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值