Ale*_*kov 5 upload background transfer ios7 nsurlsession
使用后台传输从图库上传资源的最佳方法是什么?
似乎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上载它.但是,此行为可能会在将来发生变化.
他们还在文档中的某个地方说上传/下载 URL 仅支持文件 http https 方案。后台仅支持http/https。
我相信核心数据和资产库 url 尽管在技术上是有效的 url,但并不是真正的 url,而且很可能不是通过创建自定义 NSurlprotocol-s 来实现的。
所以我倾向于认为您应该将资产写入某个文件并将 URL 传递到该文件以上传任务。我正在开发一个也上传资产的项目,并且我刚刚开始使用后台会话将其转换为 nsursession。所以今天晚些时候我将亲自尝试一下以证明这个理论。
归档时间: |
|
查看次数: |
2018 次 |
最近记录: |