xjlonly

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


 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-11-23
  • 2021-08-04
  • 2021-09-29
  • 2021-10-18
  • 2021-08-14
猜你喜欢
  • 2022-01-15
  • 2021-05-20
  • 2021-11-17
  • 2021-11-03
  • 2022-01-23
  • 2021-12-15
  • 2021-04-11
相关资源
相似解决方案