HTML5浏览器定位三次不允许定位后不再弹出定位授权提示框

时间:2022-11-22 15:33:41

最近在微信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需要重新授予获取位置权限