CoreLocation CLLocationManagerDelegate returns cached/delayed 飞行中的位置

CoreLocation CLLocationManagerDelegate returns cached/delayed locations in mid-flight

CLLocationManagerDelegate 方法 locationManager:didUpdateLocations: 是否有可能在使用过程中 return 缓存值?

或者是否存在 CoreLocation 在高速或高海拔下无法正常工作的已知错误?

我有飞机跟踪应用程序,一些使用旧 iPad 设备的用户通知我,该应用程序显示的位置不正确(大约 3-4 分钟延迟)。我还实现了文本日志,它会毫不拖延地显示正确的时间戳。

应用程序在到达新位置后立即呈现视图并记录数据,并且不可能排队,因此这应该不是问题。

CoreLocations 会如此严重地限制(CPU 问题吗?)以启动代表并延迟如此之久?速度可以成为它的原因吗?正如我所说,它用于小型飞机,所以速度比汽车快得多。

编辑:为了清楚起见,我正在检查实际时间戳,并且总是从 didUpdateLocations

获取数组的最后一个元素

您无法在没有运营需要的情况下获取实时数据,并且接收实时数据的组织不能合法地公开重新分发此数据,除非 FAA 批准的其他组织。运营需求几乎意味着您必须成为航空公司或商业运营商的航班调度员,而不仅仅是对跟踪航班感兴趣。更多细节 检查以下 check here

经过一些挖掘和苹果支持的帮助(大帮助),看起来原因是 ios12 中的变化。

必须在 ios12 之前为 .otherNavigation 设置 activityType,为 ios12+

设置 .airborne

以前这个选项似乎没有任何影响...