AFNetworking 2.0 Как возобновить отмененную загрузку

Я переписываю сетевой код своего приложения в AFNetworking 2.0, используя AFHTTPSessionManager в качестве базового класса. Я хочу повторно реализовать свою текущую реализацию загрузки, но мне не удается повторно реализовать мое старое поведение.

Текущая реализация:

  • Загрузите файл в папку tmp
  • Если загрузка прошла успешно, переместите файл по пути назначения
  • Если загрузка не удалась/отменена, оставьте загруженные данные в папке tmp.
  • Если пользователь хочет возобновить загрузку (начинает загрузку снова), проверьте папку tmp и возобновите загрузку с того места, где была прервана последняя загрузка.

Текущий подход:

Чтобы начать загрузку, я использую метод AFURLSessionManager downloadTaskWithRequest:progress:destination:completionHandler:. Если загрузка завершена, вызывается блок назначения и завершенияHandler, и все в порядке. Но если я отменяю задачу, вызывается только блок завершенияHandler, и я не могу найти позицию уже загруженного файла, которая необходима для возобновления загрузки в правильной позиции. Чтобы возобновить загрузку, я бы использовал метод downloadTaskWithResumeData:progress:destination:completionHandler:. Но чтобы получить уже загруженные данные, мне нужен путь к файлу загрузки tmp.

Вопрос: Как я могу получить путь к прерванному файлу загрузки? Или как мне возобновить эту загрузку без повторной загрузки всех данных?


person Noroxs    schedule 09.11.2015    source источник


Ответы (1)


NSURLSessionDownloadTask имеет метод cancelByProducingResumeData:. Это предложит объект данных возобновления, который необходим для возобновления загрузки.

Данные этого резюме можно сохранить в файл и возобновить позже с помощью downloadTaskWithResumeData:progress:destination:completionHandler.

person Noroxs    schedule 09.11.2015