問題描述
- 手機端h5頁面調(diào)用百度地圖獲取地理位置的API,iOS手機上效果會提示是否允許百度地圖訪問開啟定位服務(wù),如果點擊不允許芋类,退出后 ,重復(fù)操作三次界阁,即使重新到iPhone的設(shè)置里開啟允許應(yīng)用獲取定位侯繁,進入頁面仍然無法獲取定位。
原因分析
- 第一反應(yīng)是’不允許‘這個被瀏覽器記錄泡躯,但是由于h5是應(yīng)用在企業(yè)微信中贮竟,在iPhone設(shè)置中開啟了企業(yè)微信允許授權(quán)定位,但是仍然不起作用较剃,重新啟動企業(yè)微信也不起作用咕别,調(diào)用geolocation也會報錯(accuracy為null)
let geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(
function(r) {
//關(guān)于狀態(tài)碼
//BMAP_STATUS_SUCCESS 檢索成功。對應(yīng)數(shù)值“0”重付。
//BMAP_STATUS_CITY_LIST 城市列表顷级。對應(yīng)數(shù)值“1”。
//BMAP_STATUS_UNKNOWN_LOCATION 位置結(jié)果未知确垫。對應(yīng)數(shù)值“2”弓颈。
//BMAP_STATUS_UNKNOWN_ROUTE 導(dǎo)航結(jié)果未知。對應(yīng)數(shù)值“3”删掀。
//BMAP_STATUS_INVALID_KEY 非法密鑰翔冀。對應(yīng)數(shù)值“4”。
//BMAP_STATUS_INVALID_REQUEST 非法請求披泪。對應(yīng)數(shù)值“5”纤子。
//BMAP_STATUS_PERMISSION_DENIED 沒有權(quán)限。對應(yīng)數(shù)值“6”款票。(自 1.1 新增)
//BMAP_STATUS_SERVICE_UNAVAILABLE 服務(wù)不可用控硼。對應(yīng)數(shù)值“7”。(自 1.1 新增)
//BMAP_STATUS_TIMEOUT 超時艾少。對應(yīng)數(shù)值“8”卡乾。(自 1.1 新增)
if (this.getStatus() === BMAP_STATUS_SUCCESS) {
//精度為undefined 代表用戶拒絕授權(quán)地理位置
if (r.accuracy === null) {
console.log('用戶不允許定位')
}else{
console.log('用戶允許')
}
}
);
- 查閱資料后發(fā)現(xiàn),三次不允許后缚够,iOS系統(tǒng)默認(rèn)不讓該應(yīng)用程序獲取定位幔妨,所以不論你在設(shè)置里開啟都沒有用鹦赎。并且,沒有重啟這個提示彈窗都API
解決方法
- 將系統(tǒng)設(shè)置里都定位設(shè)置重制
1误堡、(設(shè)置)Settings -> (通用)Genera -> (重置) Reset-> (重置定位于隱私)Reset Location & Privacy.
2古话、(設(shè)置)Settings ->( 隱私)Privacy 開啟 Location Services.
MORE
- 如果是將h5頁面嵌在app中,可以用js與app進行交互的方式獲取定位锁施,在原生app獲取定位后傳入給h5陪踩,這樣當(dāng)整個app的定位權(quán)限被用戶拒絕與開啟的時候,直接到設(shè)置中對應(yīng)的app下就可以恢復(fù)了
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者