5

将我的 iPad 更新到 iOS 13 后,我在我的应用程序中使用后台任务,我的应用程序发出了这个:

无法结束 BackgroundTask:不存在标识符 > 13 (0xd) 的后台任务,或者它可能已经结束。中断 UIApplicationEndBackgroundTaskError() 进行调试。

我使用 UIApplicationEndBackgroundTaskError() 进行了调试,但没有得到任何结果,我已经在 iOS 12 和其他以前的版本上测试过它运行良好。

4

1 回答 1

0

您需要设置 bgTask = UIBackgroundTaskInvalid

两分钟

在到期处理程序中。完成任务后。

我相信您错过了这两个时刻中的任何一个,这就是您收到该错误的原因。

查看苹果示例代码:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{
    // Clean up any unfinished task business by marking where you
    // stopped or ending the task outright.
    [application endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
}];

// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    // Do the work associated with the task, preferably in chunks.

    [application endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
});

}

于 2019-12-07T23:09:29.477 回答