iOS: принудительный выход из приложения отключает фоновую загрузку с помощью NSURLSession?
Вопрос вокруг NSURLSession и NSURLSessionUploadTask.
Я загружаю большие файлы на сервер и заметил, что при принудительном выходе из приложения вся фоновая загрузка просто останавливается. Однако, когда загрузка начинается, когда приложение выполняется через XCode / отладчик, тогда моя загрузка завершается очень хорошо, даже когда я останавливаю приложение, запущенное с помощью кнопки "Stop" XCode. Я подозреваю, что принудительный выход из приложения с использованием XCode имитирует системную команду iOS, а не действия пользователя.
Поэтому мой вопрос: правда ли, что iOS немедленно отменит NSURLSessionUploadTask, когда пользователь принудительно закроет приложение? По какой-то причине я, по крайней мере, ожидал бы обратного вызова приложения, но ничего не происходит.
2 ответа
Теперь я могу подтвердить, что после нескольких тестов фоновая задача будет работать нормально, если приложение будет переведено в фоновый режим. Однако, если пользователь принудительно покинет приложение вручную, iOS отменит все запланированные фоновые задачи. Поэтому в следующий раз, когда приложение запускается, я получаю все обратные вызовы делегату с кодом ошибки отмененной задачи.
Надеюсь, это поможет кому-то разобраться в том же.
Из документов Apple о фоновом исполнении:
Если задачи еще не завершены и система завершает работу вашего приложения, система автоматически продолжает управление задачами в фоновом режиме. Если пользователь закрывает ваше приложение, система отменяет все незавершенные задачи.