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