Я переписываю сетевой код своего приложения в AFNetworking 2.0, используя AFHTTPSessionManager в качестве базового класса. Я хочу повторно реализовать свою текущую реализацию загрузки, но мне не удается повторно реализовать мое старое поведение.
Текущая реализация:
- Загрузите файл в папку tmp
- Если загрузка прошла успешно, переместите файл по пути назначения
- Если загрузка не удалась/отменена, оставьте загруженные данные в папке tmp.
- Если пользователь хочет возобновить загрузку (начинает загрузку снова), проверьте папку tmp и возобновите загрузку с того места, где была прервана последняя загрузка.
Текущий подход:
Чтобы начать загрузку, я использую метод AFURLSessionManager downloadTaskWithRequest:progress:destination:completionHandler:
. Если загрузка завершена, вызывается блок назначения и завершенияHandler, и все в порядке. Но если я отменяю задачу, вызывается только блок завершенияHandler, и я не могу найти позицию уже загруженного файла, которая необходима для возобновления загрузки в правильной позиции. Чтобы возобновить загрузку, я бы использовал метод downloadTaskWithResumeData:progress:destination:completionHandler:
. Но чтобы получить уже загруженные данные, мне нужен путь к файлу загрузки tmp.
Вопрос: Как я могу получить путь к прерванному файлу загрузки? Или как мне возобновить эту загрузку без повторной загрузки всех данных?