Кто-нибудь знает, как быстро решить проблемы с BackgroundTask?
Я использую фоновую задачу в своем приложении после обновления моего iPad до iOS 13, мое приложение выдаёт следующее:
Невозможно завершить BackgroundTask: фоновой задачи с идентификатором> 13 (0xd) не существует или она, возможно, уже завершена. Перерыв в UIApplicationEndBackgroundTaskError() для отладки.
Я отлаживал с помощью UIApplicationEndBackgroundTaskError(), но не получил никакого результата, и я протестировал его на iOS 12 и других предыдущих версиях, он работал отлично.
1 ответ
Вам нужно установить bgTask = UIBackgroundTaskInvalid
через два момента
В обработчике истечения срока. После завершения вашей задачи.
Я считаю, что вам не хватает любого из этих двух моментов, и именно поэтому вы получаете эту ошибку.
См. Пример кода Apple:
- (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;
});
}