使用后台传输从图库上传资源的最佳方法是什么?
似乎uploadTaskWithRequest:fromData:
不适用于NSURLSession
创建,backgroundSessionConfiguration
因为它会导致异常:"由于未捕获的异常'NSGenericException'终止应用程序,原因:'后台会话中的上传任务必须来自文件".从异常描述来看,后台传输也不适用于流上传任务.
很公平.uploadTaskWithRequest:fromFile:
当您考虑上传磁盘上已有的数据时,首先想到的是这一点.但是NSURLSession类参考告诉我们这个方法只适用于文件URL,但是当你获得资产的url路径时,它从"assets-library:// asset/..."开始,并且提供这个路径也不起作用.
因此,似乎剩下的唯一选择是将资产库中的文件复制到临时目录中,并提供其文件URL uploadTaskWithRequest:fromFile:
.但它没有任何意义,因为您已经在磁盘上保存了资产文件.我错过了什么吗?
更新:
在Tech Talks活动中与Apple工程师交谈,他确认后台NSURLSession仅支持文件URL.确实,您需要将资产库复制到临时目录中,并提供其文件URL以uploadTaskWithRequest:fromFile:
使用后台NSURLSession上载它.但是,此行为可能会在将来发生变化.