有谁知道如何在 swift 中解决 BackgroundTask 问题?



将iPad更新到iOS 13后,我正在应用程序中使用后台任务,我的应用程序发出以下命令:

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

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

你需要设置 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;
});

}

相关内容

  • 没有找到相关文章

最新更新