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


 

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

  現如今opensetting也已經廢棄

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

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

此時我們只需要在handle里再次調用該函數即可

 
         

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。倘若此時已經授權,便可以獲取到經緯度調取數據,否則按鈕仍然存在。

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

 

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

 

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM