NSURLSession: загрузка ресурсов с фоновой передачей
Как лучше всего использовать фоновую передачу для загрузки ресурсов из галереи?
Похоже наuploadTaskWithRequest:fromData:
не работает сNSURLSession
создан сbackgroundSessionConfiguration
поскольку это вызывает исключение: «Завершение приложения из-за необработанного исключения« NSGenericException », причина:« Задачи загрузки в фоновых сеансах должны быть из файла ». Судя по описанию исключения, фоновая передача не должна работать и с потоковыми задачами загрузки.
Справедливо.uploadTaskWithRequest:fromFile:
это первое, что приходит на ум, когда вы думаете о загрузке данных, которые у вас уже есть на диске. Но NSURLSession Class Reference говорит нам, что этот метод работает только с URL-адресами файлов, но когда вы получаете URL-адрес ресурса, он начинается с "assets-library: // asset / ..." и предоставление этого пути тоже не работает.
Таким образом, кажется, что единственный оставшийся вариант - скопировать файл из библиотеки ресурсов во временный каталог и предоставить его URL-адрес файлаuploadTaskWithRequest:fromFile:
, Но это не имеет никакого смысла, потому что у вас уже есть файл активов, сохраненный на вашем диске. Я что-то пропустил?
Обновить:
Поговорил с инженером Apple на мероприятии Tech Talks, и он подтвердил, что фон NSURLSession поддерживает только URL-адреса файлов. Таким образом, вам действительно нужно скопировать библиотеку ресурсов во временный каталог и предоставить ее URL-адрес файлаuploadTaskWithRequest:fromFile:
загрузить его с фоном NSURLSession. Это поведение может измениться в будущем, хотя.