位置服务在 iOS10 中无法与 UIWebView 一起使用
Posted
技术标签:
【中文标题】位置服务在 iOS10 中无法与 UIWebView 一起使用【英文标题】:the Location Service not working with UIWebView in iOS10 【发布时间】:2016-09-23 05:57:07 【问题描述】:我的应用有一个 UIWebView 可以通过 html5 使用定位服务。它在 ios 10 下运行良好。当您第一次启动应用程序并进入 webView 时,会出现一条警报,询问用户是否允许使用系统定位服务。在您的许可下, UIWebView 可以正常工作。一切都感觉棒极了。
但是,当我将我的应用程序安装到运行 iOS10 的设备上时,警报不会出现。并且 UIWebView 显示错误。我什至无法在“设置”应用中找到位置设置。
有没有人遇到同样的问题?或者谁能告诉我发生了什么?任何线索将不胜感激。
【问题讨论】:
我遇到了同样的问题。如果您使用的是maps.googleapis.com/maps/api/js?sensor=true,请更改为 https。它会起作用的。 确保您在“设置”>“隐私”>“定位服务”>“Safari”中为 Safari 浏览器启用了定位 @MihirOza 是的,你是对的。虽然我已经解决了这个问题,但还是谢谢你。我使用百度地图服务。 :) 【参考方案1】:我找不到任何特定于 UIWebView 的内容,但是,我发现苹果现在正在阻止对不安全页面上的地理定位 API 的调用。
网络 API
开始在不安全的页面上阻止 Geolocation API 调用 连接
See release notes
我怀疑您的问题与此有关。
【讨论】:
但是,Apple 的“不安全连接”是什么意思?这是否意味着我们必须使用 https 而不是 http?有什么想法吗? @Neal.Marlin 是的,你必须使用 https 感谢您的帮助,我会试试看。 @Neal.Marlin 请告知您是否这样做并且成功了,谢谢【参考方案2】:我认为您忘记在应用的 info.plist 中添加隐私密钥。
您可以在 iOS10 更新指南中找到相关信息。
【讨论】:
是的,我已经为我的应用配置了“使用时”描述。此配置更改从 iOS 8 开始,但我的应用程序在 iOS 10 以下运行良好。【参考方案3】:webview 将开始自动监控位置,但是由于 iOS 8 位置访问需要在您的信息 plist 中设置 NSLocationWhenInUseUsageDescription 描述。
如果这样做了,它会自动提示用户允许位置访问。
【讨论】:
我已经完成了“使用时”的配置,它确实可以按照您在 iOS 10 下所说的那样工作。它只会在 iOS 10 中出错!以上是关于位置服务在 iOS10 中无法与 UIWebView 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
完美解决window.navigator.geolocation.getCurrentPosition,在IOS10系统中无法定位问题