解决uniapp中地址授权失败

当用户点击取消地址授权后的解决方法

			...mapMutations('m_user', ['updateAddress']),
			// 把 m_user 模块中的 address 对象映射到当前组件进行使用
			...mapState('m_user', ['address']),
			// 选择收货地址
			async chooseAddress() {
				// 1. 调用小程序提供的 chooseAddress() 方法,即可使用选择收货地址的功能
				//    返回值是一个数组:第 1 项为错误对象;第 2 项为成功之后的收货地址对象
				const [err, succ] = await uni.chooseAddress().catch(err => err)

				// 2. 用户成功的选择了收货地址
				if (err === null && succ.errMsg === 'chooseAddress:ok') {
					// 为 data 里面的收货地址对象赋值
					// this.address = succ
					// 通过此方法将数据存储到user.js模块
					this.updateAddress(succ)
				}
				// 3.如果用户没有授权
				if (err && err.errMsg === 'chooseAddress:fail auth deny') {
					this.reAuth() //重新发起授权 申请
				}
			},
			async reAuth() {
				// 3.1 提示用户对地址进行授权
				const [err2, confirmResult] = await uni.showModal({
		 		content: '检测到您没打开地址权限,是否去设置打开?',
					confirmText: "确认",
					cancelText: "取消",
				})

				// 3.2 如果弹框异常,则直接退出
				if (err2) return

				// 3.3 如果用户点击了 “取消” 按钮,则提示用户 “您取消了地址授权!”
				if (confirmResult.cancel) return uni.$showMsg('您取消了地址授权!')

				// 3.4 如果用户点击了 “确认” 按钮,则调用 uni.openSetting() 方法进入授权页面,让用户重新进行授权
				if (confirmResult.confirm) return uni.openSetting({
					// 3.4.1 授权结束,需要对授权的结果做进一步判断
					success: (settingResult) => {
						// 3.4.2 地址授权的值等于 true,提示用户 “授权成功”
						if (settingResult.authSetting['scope.address']) return uni.$showMsg(
							'授权成功!请选择地址')
						// 3.4.3 地址授权的值等于 false,提示用户 “您取消了地址授权”
						if (!settingResult.authSetting['scope.address']) return uni.$showMsg(
							'您取消了地址授权!')
					}
		 	})
			}

但是新问题又来了,就是当 iPhone 用户取消授权之后,再次点击选择地址按钮的时候,无法弹出授权的提示框!

解决办法如下

async chooseAddress() {
  // 1. 调用小程序提供的 chooseAddress() 方法,即可使用选择收货地址的功能
  //    返回值是一个数组:第1项为错误对象;第2项为成功之后的收货地址对象
  const [err, succ] = await uni.chooseAddress().catch(err => err)

  // 2. 用户成功的选择了收货地址
  if (succ && succ.errMsg === 'chooseAddress:ok') {
    this.updateAddress(succ)
  }

  // 3. 用户没有授权
  if (err && (err.errMsg === 'chooseAddress:fail auth deny' || err.errMsg === 'chooseAddress:fail authorize no response')) {
    this.reAuth()
  }
}

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

csdn文章推荐受影响测试文字行数大于10字数大于10的解决方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

object not found

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值