位置服务在 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 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

OC与JavaScript的交互

iOS 如何定位获取周围地点信息

完美解决window.navigator.geolocation.getCurrentPosition,在IOS10系统中无法定位问题

是否可以使用蓝牙(Android 和 iOS)跟踪手机位置

如何使用 ALAssetsLibrary 访问照片而不在 iOS5 中请求位置访问?

ios,获取两个成员变量中的任何一个的访问器?