无法使用endBackgroundTask:没有带标识符*的后台任务,或者它可能已经结束

时间:2015-06-18 12:58:12

标签: ios objective-c core-location uibackgroundtask

我的应用监控用户位置更新(不一定是重要的位置更改):

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

当app(在模拟器中)处于前台时,一切正常,但是当它暂停到后台(不终止)时,我将此错误记录到日志中:

  

不能使用endBackgroundTask:没有带标识符*的后台任务,或者它可能已经结束

此错误的所有其他答案都与位置服务无关,但只与通用后台任务有关。

2 个答案:

答案 0 :(得分:1)

因此,应该进行以下3个设置,以便后台位置更新正常工作。 这样做并解决问题:

  1. NSLocationAlwaysUsageDescription中设置了info.plist密钥(以值作为权限的原因)。
  2. 请求获得许可时,请务必致电[someLocationManager requestAlwaysAuthorization];
  3. 在目标设置的Location Updates部分的Background Modes中启用Capabilities。不确定这个,但听起来不错。
  4. 享受!

答案 1 :(得分:1)

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

$ sudo apt-get install libc6