Поведение NSURLSessionDownloadTask - PullRequest
0 голосов
/ 10 июля 2019

Я занимаюсь разработкой приложения, которое позволяет скачивать файлы с веб-сайтов.Это похоже на HalfTunes приложение из Учебник URLSession: Начало работы * Учебное пособие .

Поэтому я использую NSURLSessionDownloadTask для загрузки файла.Я инициализировал NSURLSession, используя

[NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"my_id"]

для поддержки загрузки в фоновом режиме.

Мне не нужна функция паузы / возобновления, но я хотел бы, чтобы загрузка возобновлялась при перезапуске приложения.

Я имею в виду, что если пользователь начинает загрузку (и скажет, что он загрузил 50% файла 1 ГБ), затем убил приложение и затем перезапустил приложение, загрузка должна продолжиться, а не начинаться с нуля.

Документация гласит:

Кроме того, загрузки, использующие фоновую конфигурацию, будут обрабатывать возобновление автоматически, поэтому ручное возобновление необходимо только для не фоновых загрузок.

Это дало мне надежду, чтопрерванные загрузки возобновятся автоматически, как только я создам URLSession экземпляр, но они этого не сделали.

Кроме того, я попытался вызвать [session getTasksWithCompletionHandler...] при запуске приложения, чтобы получить массив задач загрузки, а затем resume их явно, но это приводит к вызову

-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error

с ошибкой

Task <82C0568A-038E-46F7-BEF9-9DED2276AD7F>. <1> сбой загрузкис ошибкой Ошибка Domain = NSURLErrorDomain Code = -999 "(null)" UserInfo = {NSURLErrorBackgroundTaskCancelledReasonKey = 0,

Итак, мой вопрос: как мне возобновить закачку при перезапуске приложения?

...