關於小程序opensetting廢棄後地理位置的二次受權

 

  因爲小程序爲了客戶體驗,在用戶首次拒絕受權後,彈窗短期內將不會再出現。然而此時可能有些須要經緯度的重要數據就沒法調取,所以須要引導客戶去再次受權。目前發現可以吊起受權彈框的有wx.getLocation、 wx.authorize可是用戶拒絕後短時間內調用這些api也不會出現受權彈框了。git

  現現在opensetting也已經廢棄小程序

<button hidden='{{!hiddenLoading}}' open-type="openSetting" bindopensetting='handler' class='getLocation'>請先受權</button>

  這段代碼可使用戶進入受權界面再度受權,而上面的按鈕則能夠經過用戶是否受權來進行顯示或者隱藏(hiddenLoading)api

此時咱們只須要在handle裏再次調用該函數便可ide

 
 

handler: function() {
this.getLoaction();
}
getLoaction() {
const that = this;
wx.getLocation({
type: 'gcj02',
success: function(res) { /*console.log('success')*/
latitude = res.latitude;
longitude = res.longitude;
that.categoryList(); /*這是我經過經緯度調取數據的函數*/
that.setData({
hiddenLoading: false
});
},
fail: function() { /* console.log('fail');*/
wx.hideLoading();
that.setData({
hiddenLoading: true
})
}
})
}
 

由於本人小程序這方面所須要面對的狀況也很少,因此並無寫太多的判斷。無論受權是否,handler函數都會執行!會調動getLocation。假若此時已經受權,即可以獲取到經緯度調取數據,不然按鈕仍然存在。函數

此外,一些手機並不支持二次受權的功能,你戳爛屏幕都沒反應。只能判斷他是否支持,this

 

wx.canIUse('button.open-type.openSetting')

 

若是不支持,則顯示另外一段代碼,提示客戶手動去受權,點擊三個點--關於XX小程序--三個點--設置;並附帶一個按鈕(判斷受權,若受權就拉取數據,不然就return)spa

還有些手機即時打開也不行,你就看看那個一根筋的人是否是手機設置裏就把GPS關了,我老闆就是還每天嚷。。。。。嗯mmmcode

相關文章
相關標籤/搜索