1. 在使用uni.chooseAddress的時候,需要手機對小程序進行位置授權,第一次點擊的事件會觸發下面這個對話框:
如果點擊取消之后,后續再點擊觸發uni.chooseAddress都會自動進入fail方法,進不到success。
解決:
在fail方法里面使用uni.showModel,引導用戶手動給應用授權,uni.openSetting需要事件驅動,保證同步性。
1 fail(res) { 2 console.log('fail:',res) 3 uni.showModal({ 4 title:'溫馨提示', 5 content:'您需要授權后,才能使用微信地址作為收貨地址,是否重新授權', 6 success(res) { 7 if(res.confirm){ 8 uni.openSetting({ 9 success(res) { 10 if(res.authSetting['scope.address'] === true){ 11 uni.chooseAddress({ 12 success(res) { 13 console.log('success:',res) 14 }, 15 fail(err) { 16 console.log('fail:',err) 17 } 18 }) 19 } 20 }, 21 fail(err) { 22 console.log('設置fail:',err) 23 } 24 }) 25 console.log('用戶點擊確認') 26 } else if(res.cancel) { 27 console.log('用戶點擊取消') 28 } 29 } 30 }) 31 }
2. 授權成功后,進入微信的地址列表,沒有選擇任何地址就返回,還是會觸發fail回調,顯示我們fail方法里面的uni.showModel的內容。
原因:
在微信地址列表點擊取消,會同時執行cancel和fail,cancel 回調是早期的設計,所有取消操作都歸入 fail 回調,errMsg 為 "fail cancel"。
解決:
將得到的err信息判斷一下就好了