NSURLSessionDownloadTask продолжить загрузку, даже если я убью приложение - PullRequest
1 голос
/ 15 апреля 2019

Я использую NSURLSessionDownloadTask для загрузки веб-файла. Когда я использую [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:] для создания NSURLSessionConfiguration, я обнаружил, что NSURLSessionDownloadTask продолжает загрузку, даже если я убиваю приложение. Это не то, что я ожидаю, я просто хочу скачать его в фоновом режиме. Я не хочу убивать приложение, оно все еще загружается.

NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"DDDownloader"];
config.timeoutIntervalForRequest = 10;
self.session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];

NSURLSessionDownloadTask *downloadTask = [self.session downloadTaskWithURL:[NSURL URLWithString:downloadModel.url]];
[downloadTask resume];

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

1 Ответ

1 голос
/ 15 апреля 2019

Теперь у меня есть общая идея.Я видел описание [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:] в яблочном документе:

Если приложение iOS завершается системой и перезапускается, приложение может использовать тот же идентификатор для создания нового объекта конфигурации и сеанса иполучить статус переводов, которые выполнялись на момент прекращения.Это поведение применяется только для нормального завершения приложения системой.Если пользователь закрывает приложение с экрана многозадачности, система отменяет все фоновые передачи сеанса.Кроме того, система не запускает автоматически приложения, которые были принудительно закрыты пользователем.Пользователь должен явно перезапустить приложение, прежде чем переводы начнутся снова.

Поскольку я использую кнопку закрытия на xcode, чтобы закрыть и перезапустить мое приложение, это то, что в документе Apple говорится: «Приложение iOSзавершается системой и перезапускается ".Когда приложение закрывается таким образом, NSURLSessionDownloadTask не заканчивается.Если пользователь закрывает приложение с экрана многозадачности, система отменяет все фоновые передачи сеанса.

Итак, моя проблема решена!

...