iOS: отключает ли принудительный выход из приложения фоновую загрузку с помощью NSURLSession?

Вопрос касается NSURLSession и NSURLSessionUploadTask.

Я загружаю большие файлы на сервер и заметил, что когда я принудительно закрываю приложение, вся фоновая загрузка просто останавливается. Однако, когда загрузка начинается, когда приложение работает через Xcode/отладчик, моя загрузка завершается просто отлично, даже, когда я останавливаю работу приложения с помощью кнопки «Стоп» Xcode. Я подозреваю, что принудительный выход из приложения с помощью Xcode имитирует системную команду iOS, а не действие пользователя.

Итак, мой вопрос: правда ли, что iOS немедленно отменяет NSURLSessionUploadTask, когда пользователь принудительно выходит из приложения?? По какой-то причине я бы, по крайней мере, ожидал обратного вызова об ошибке в приложении, однако ничего не происходит.


person ymotov    schedule 23.11.2013    source источник


Ответы (2)


Теперь, после нескольких тестов, я могу подтвердить, что фоновая задача будет работать нормально, если приложение просто переведено в фоновый режим. Однако, если пользователь принудительно закроет приложение вручную, iOS отменит все запланированные фоновые задачи. Поэтому при следующем запуске приложения я получаю все обратные вызовы делегату с кодом ошибки отмененной задачи.

Надеюсь, это поможет кому-то изучить то же самое.

person ymotov    schedule 03.12.2013

Из документы о фоновом выполнении:

Если задачи еще не завершены и система завершает работу вашего приложения, система автоматически продолжает управлять задачами в фоновом режиме. Если пользователь закрывает ваше приложение, система отменяет все незавершенные задачи.

person mannannlegur    schedule 03.09.2015
comment
Это очень важно и полезно, но ваша ссылка на документы ведет только к основной точке входа в документы Apple UIKit, что позволяет читателю попытаться найти соответствующую информацию. Если вы нашли соответствующий отрывок в документах, не могли бы вы обновить ссылку, чтобы она была более прямой? - person Motti Shneor; 15.09.2019