JS 中的 getCurrentPosition 在 iOS 上不起作用

2023-11-25

我有一个页面,其中包含一个代码,该代码从设备获取当前位置,并使用以下代码根据该位置加载其他内容:

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(使用前将#替换为@)

JS 中的 getCurrentPosition 在 iOS 上不起作用 的相关文章

随机推荐