-2

我的应用通过以下方式监控用户位置更新(不一定是重大的位置变化):

someLocationManager = [[CLLocationManager alloc] init];
[someLocationManager setDelegate:self];
[someLocationManager startUpdatingLocation];

当应用程序(在模拟器中)处于前台时,一切正常,但是当将其挂起到后台(不终止)时,我在日志中收到此错误:

Can't endBackgroundTask:不存在标识符为 * 的后台任务,或者它可能已经结束

此错误的所有其他答案都与位置服务无关,而只是一般的后台任务问题。

4

2 回答 2

1

因此,为了使后台位置更新正常工作,似乎应该进行以下 3 项设置。这样做并解决问题:

  1. NSLocationAlwaysUsageDescriptioninfo.plist. _
  2. 请务必[someLocationManager requestAlwaysAuthorization];在请求许可时致电。
  3. 在您的目标设置中启用inLocation Updates部分。不确定这个,但听起来不错。Background ModesCapabilities

享受!

于 2015-06-18T12:58:11.607 回答
1

在从用户获取位置授权时添加以下代码。因为苹果从 iOS9 更改了默认的allowBackgroundLocationUpdates NO。

'if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
    locationManager.allowsBackgroundLocationUpdates = YES;
}'
于 2015-10-28T13:49:08.573 回答