我正在拨打 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 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/