CLLocationManager desiredAccuracy 的 kCLLocationAccuracyHundredMeters 导致位置更新非常不频繁

CLLocationManager desiredAccuracy of kCLLocationAccuracyHundredMeters causes location updates to be very infrequent

我正在尝试将 kCLLocationAccuracyHundredMeters 的位置精度用于我的应用程序中的标准位置更新,这似乎工作得相对较好,但每隔一段时间我更新之间会有 10 分钟的间隔(同时在不同方向行驶数英里),这似乎不符合设置的特点。这是我的位置管理器上的设置。此外,我仅使用前台位置更新,因此对于这些测试,我一直都在使用屏幕,而应用程序始终处于前台。

self.locManager = [[CLLocationManager alloc] init];
self.locManager.delegate = self;
self.locManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
self.locManager.distanceFilter = 15;

我用相同的其他设置尝试了 kCLLocationAccuracyBest,我在整个驾驶过程中获得了完美的测量结果,但我不需要那么精确的位置。我假设百米精度仍会提供相对一致的更新,但精度较低,这正是我们正在寻找的。

这只是使用 kCLLocationAccuracyHundredMeters 设置与 kCLLocationAccuracyBest 设置的副作用吗?

在 iPhone 6s : 11.0.2 和 iPhone 7Plus : 11.0.3

上测试

感谢任何帮助,谢谢!

编辑:

我应该澄清一下,我在下面列出的 CLLocationManager 委托方法中设置了日志记录,但从未收到任何回调/日志。

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error;
- (void)locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(nullable NSError *)error;
- (void)locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager;
- (void)locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager;

当您要求 kCLLocationAccuracyHundredMeters 时 iPhone 根本不使用 GPS,而是依靠手机信号塔和 wifi 接入点进行三角测量。这意味着 iPhone 使用 wifi 扫描的频率更新位置,这远非连续的。如果您远离有 wifi 覆盖的区域,手机信号塔将成为您唯一的来源,您可能只有在手机信号塔之间切换时才会开始获取位置更新。

长话短说:

  • 设置精度告诉 iOS 使用哪个硬件,

  • 距离过滤器告诉 iOS 在醒来之前移动多远 CPU 使用新数据