methods:{
...mapMutations('user',['setAddress']),
async chooseAddress(){
// 1. 调用小程序提供的 chooseAddress() 方法,即可使用选择收货地址的功能
// 返回值是一个数组:第 1 项为错误对象;第 2 项为成功之后的收货地址对象
//不用解析方式拿数据[err,info]拿不到这两条数据
const data= await uni.chooseAddress().catch(err => err)
// 2. 用户成功的选择了收货地址
console.log(data);
if(data.errMsg === 'chooseAddress:ok'){
this.setAddress(data)
}
// 3. 用户没有授权
if (data.errMsg === 'chooseAddress:fail auth deny' || data.errMsg === 'chooseAddress:fail authorize no response') {
this.reAuth() // 调用 this.reAuth() 方法,向用户重新发起授权申请 ios 需要有这个验证
}
},
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('您取消了地址授权!')
}
})
}
},
computed:{
...mapState('user',['address']),
addresstr(){
return this.address.cityName+this.address.countyName+this.address.detailInfo
}
}
}
data打印的数据
需要在Hbulider中的manifest.json中——>源码视图 配置requiredPrivateInfos 注意配置位置
"mp-weixin" : {
"appid" : "wx1d5027e84e6ce102",
"setting" : {
"urlCheck" : false,
"checkSiteMap":false
},
"usingComponents" : true
},
"mp-alipay" : {
"usingComponents" : true
},
"mp-baidu" : {
"usingComponents" : true
},
"mp-toutiao" : {
"usingComponents" : true
},
"uniStatistics" : {
"enable" : false
},
"vueVersion" : "2",
"requiredPrivateInfos":[
"chooseAddress"
]
}
微信开发者工具中app.json中 加上这个配置项
"requiredPrivateInfos": [
"chooseAddress"
],