iOS 应用程序关闭时的重要位置更改检测

iOS Significant Location Change Detection When Application Is Closed

我一直在尝试在应用程序完全关闭时使用显着的位置更改,但它没有给出预期的结果。

我的应用程序应该检测汽车旅行何时开始。为此,我注册了重要位置更改跟踪,因此应用程序应该在 iOS 发生重大更改后启动。

在模拟器上,我模拟了高速公路驾驶,它运行得非常好。但是,在真实设备上,应用程序会在以非常高的速度移动 5 到 10 公里后启动。

我在商店中发现其他成功执行此操作的应用程序,所以我想知道我的实施的哪一部分不正确。

我在信息 plist 中启用了位置背景模式。这是我用来启动重要位置更新的代码:

self.significantLocationManager = [[CLLocationManager alloc] init];
self.significantLocationManager.delegate = self;
if ([self.significantLocationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
    self.significantLocationManager.allowsBackgroundLocationUpdates = YES;
}
[self.significantLocationManager startMonitoringSignificantLocationChanges];

编辑:我已经请求并授予我的应用程序 "Always" 使用定位服务的权限。该应用程序已经在前台、后台和终止时使用位置(但从终止状态启动需要很多时间)。

您必须请求 Always 允许 运行 您的应用程序在后台运行。即使您的应用程序被终止,如果重要位置发生更改,该应用程序也会唤醒。到那时你不能更改任何 UI 组件(即更改标签文本等)除此之外你的代码是正确的。