原文鏈接:http://www.skyfox.org/html5-geolocation-safari-user-permission-prompt.html
不管是原生iOS APP嵌入單個h5頁面,還是都是h5頁面的webapp也好,只要涉及到定位都會遇到這個情況。
當(dāng)請求iOS開始定位的時候,會彈出一個提示框,提示你是否"允許"定位,允許定位繼續(xù)下一步,如果一不小心點了下"不允許"之后,會發(fā)現(xiàn),下次進到這個h5之后再也不會提示請求定位權(quán)限的提示框了。"不允許"被緩存了下來。再次調(diào)用geolocation會報 error.PERMISSION_DENIED 錯誤
而且沒有相應(yīng)的api能重啟提示框。
解決辦法很雞肋,需要在系統(tǒng)中就行清理緩存的設(shè)置:
(設(shè)置)Settings -> (通用)Genera -> (還原) Reset-> (還原位置與隱私)Reset Location & Privacy.
(設(shè)置)Settings ->( 隱私)Privacy 開啟 Location Services.
重新進入頁面即可提示用戶權(quán)限提示了!
如果說h5頁面用于app中顯示,可以嘗試使用js與app原生交互來獲取定位,原生獲取定位后反傳給h5,這樣當(dāng)整個app的定位權(quán)限被用戶拒絕與開啟的時候,直接到設(shè)置中對應(yīng)的app下就可以恢復(fù)了。