Кто-нибудь знает, как быстро решить проблемы с 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;
});

}

Другие вопросы по тегам