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