geolocation.watchPosition() 在 iOS Safari 中间歇性失败并显示 POSITION_UNAVAILABLE

问题描述 投票:0回答:1

我正在拨打 watchPosition 电话:

navigator.geolocation.watchPosition(onSuccess, onError, {
  maximumAge: 10000,
  timeout: 10000,
  enableHighAccuracy: true,
});

大约 90% 的情况下,这在我的 iPhone 15 Pro 上不起作用。但它在某些时候确实有效。在 iOS 设备模拟器和我的笔记本电脑/台式机上,这总是工作得很好。 我收到的错误代码为

POSITION_UNAVAILABLE

,并带有消息:

The operation couldn't be completed. (kCLErrorDomain error 0.)
我的网站

使用HTTPS。

iphone geolocation mobile-safari
1个回答
-1
投票

硬件限制:如果无法获得清晰的卫星信号(例如在室内或手机服务有限的区域),iPhone 15 Pro 的 GPS 或基于网络的定位有时可能会失败。如果设备短暂失去定位精度,则可能会发生此错误,这可能是其发生不一致的原因。

位置服务设置:确保为特定浏览器(Safari 或您正在使用的任何其他浏览器)启用位置服务,并且应用程序的权限在 iOS 设置中设置为“使用应用程序时”或“始终”。

高精度模式:有时,如果设备找不到 GPS 信号,设置enableHighAccuracy: true 可能会带来挑战,从而导致 POSITION_UNAVAILABLE 错误。尝试将 enableHighAccuracy 切换为 false 以查看错误频率是否降低。

隐私限制:iOS有更严格的隐私设置。确保该网站具有权限并且不会触发任何与隐私相关的中断,尤其是在 Safari 中。有时 Safari 中的隐私浏览模式也会限制地理位置。

潜在的解决方案

回退到较低的精度:如果高精度并不重要,您可以设置enableHighAccuracy:false。它使用 Wi-Fi 和蜂窝网络进行定位,在室内或 GPS 信号弱的地方可能更可靠。 重试逻辑:实现重试机制,在遇到 POSITION_UNAVAILABLE 时重新请求位置数据,而不是立即终止。递归函数或 setTimeout 可以在几秒钟后在失败时重新调用 watchPosition。

调试位置服务:通过转到“设置”>“常规”>“重置”>“重置位置和隐私”来重置设备上的位置服务。这有时可以解决 iOS 位置服务行为不可预测的问题。

替代方法:如果精度不是最优先考虑的,请考虑定期使用 getCurrentPosition 而不是 watchPosition。 getCurrentPosition 通常具有较少的错误问题,但需要您重新调用它才能定期更新。这是从

https://thespotifypremiumapks.com/

挑选的

© www.soinside.com 2019 - 2024. All rights reserved.