我有一个页面,其中包含一个代码,该代码从设备获取当前位置,并使用以下代码根据该位置加载其他内容:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(successFunction);
} else {
// Make API call to the GeoIP services
}
它适用于我测试过的所有 Android 设备,但在 iOS 和 macOS 上,它不起作用。两者都不if
nor else
。似乎它卡在获取当前位置上。
有什么帮助吗?
如果 iOS 和 macOS 不允许,则不会向您提供用户的位置or如果系统不能信任你。所以:
- 首先(可能是你的答案)
它适用于您提供的确切代码ONLY IF主机(又名来源)正在使用https。这就是由于您对下面的答案发表评论而未显示权限警报的原因。
如果你不使用请记住https,它会卡住大约一分钟,然后返回有关身份验证失败的错误。使用error检查:
navigator.geolocation.getCurrentPosition(success, error, options)
它会告诉你这样的事情:
[已阻止] 由于连接不安全,对地理位置的访问被阻止
到http://example.com.
Tip:您可以在请求位置后刷新页面以跳过等待过程。但不要忘记检查保存日志检查器中的选项。
- 第二:
如果您正在使用https,然后检查您的 Safari 位置设置,该设置可能已以某种方式设置为关闭,您可以在此处更改它:设置 > 隐私 > 位置服务 > Safari。这不是默认选项,但也许您不小心更改了它。因此,如果这是问题所在,请不要担心用户。如果您使用 Chrome 或任何其他第三方浏览器,请前往其设置并检查位置访问。默认情况下它不存在,并且仅在需要至少一次位置时才会出现。
- Third:
如果您要加载您的网页在应用程序内 using webView
,确保添加位置权限说明 to the 信息表文件。添加NSLocationWhenInUseUsageDescription
versus NSLocationAlwaysUsageDescription
versus NSLocationUsageDescription
作为您的需求。
为了完整起见,在iOS13上,你无法获取always
允许。但这不是重点,重点是您必须在某个时候获得所需的权限before你需要从 GPS 获取位置,否则它根本不起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)