无法endBackgroundTask:没有标识符为1fd57580的后台任务,或者它可能已经结束

时间:2015-10-23 05:24:51

标签: ios xcode6

AppDelegate.m文件包含

{{1}}

我不知道为什么我在gdb中收到此消息

  

无法endBackgroundTask:没有带标识符的后台任务   1fd57580,或者它可能已经结束。打破   UIApplicationEndBackgroundTaskError()来调试。

2 个答案:

答案 0 :(得分:3)

你的代码都错了。它应该是这样的:

UIBackgroundTaskIdentifier taskID = [application beginBackgroundTaskWithExpirationHandler:^{
    // Code to ensure your background processing stops executing
    // so it reaches the call to endBackgroundTask:
}];

// Put the code you want executed in the background here

if (taskID != UIBackgroundTaskInvalid) {
    [[UIApplication sharedApplication] endBackgroundTask:taskID];
}

答案 1 :(得分:1)

如果您在后台使用位置更新,请在获取用户的位置授权时添加以下代码。这是因为Apple从iOS 9开始将allowsBackgroundLocationUpdates的默认值更改为NO

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
    locationManager.allowsBackgroundLocationUpdates = YES;
}