HTML5瀏覽器定位三次不允許定位后不再彈出定位授權提示框


最近在微信H5頁開發中遇到一個瀏覽器定位問題,使用geolocation定位時,IOS微信用戶在點擊三次取消授權定位后,頁面就不會再彈窗提示獲得定位授權。

經過調試發現錯誤信息是“Geolocation permission denied.”  瀏覽器默認認為用戶已經拒絕授權獲取位置,說明用戶之前“不允許”操作已經被緩存下來,

嘗試退出微信,清理微信緩存皆不奏效,后來搜索關於H5瀏覽器定位權限問題的解決辦法,發現前輩文章http://www.skyfox.org/html5-geolocation-safari-user-permission-prompt.html 經過解讀豁然開朗,


不管是原生iOS APP嵌入單個h5頁面,還是都是h5頁面的webapp也好,只要涉及到定位都會遇到這個情況。當請求iOS開始定位的時候,會彈出一個提示框,提示你是否"允許"定位,允許定位繼續下一步,如果一不小心點了下"不允許"之后,會發現,下次進到這個h5之后再也不會提示請求定位權限的提示框了。"不允許"被緩存了下來。再次調用geolocation會報 error.PERMISSION_DENIED 錯誤,而且沒有相應的api能重啟提示框。


解決辦法很雞肋,需要在系統中就行清理緩存的設置:

設置->通用->還原->還原位置與隱私

還原設置后打開APP需要重新授予獲取位置權限 


 


免責聲明!

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



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