场景
作为一个用户,我可以(无限数量)照片和视频存储在应用程序文档文件夹。这些媒体文件中的每一个都会在Sqlite数据库中获得一条记录,并提供附加信息(例如一个标题)。所有这些都可以完全脱机完成。
回到网上,我得到了一个对话框,上面有我拍摄的所有视频和照片的列表,还有一个启动上传过程的按钮。
通过向服务器发出多部分POST请求,将每个文件与其元数据一起上传到另一个文件。服务器的响应与Sqlite数据库中的元数据一起存储(因此不会发生火灾和遗忘)。
可靠解决方案?
如果我正确地阅读和理解这张图表,最简单的解决方案就是将每个上传都封装在一个任务中。副作用: 10分钟后,每项任务都会被取消,这将成为一个问题,有一个缓慢的连接或非常大的文件(例如一个非常长的视频)。
建议的方法是使用NSUrlSession/后台传输服务。
,这使我想到了我的问题:
是否有可能在NSURLSessionDataTasks中封装多部分文章,即使任务运行时间超过10分钟,或者用户正在挂起应用程序,这是否可靠?
由于我是一个Xamarin/C#的家伙,我会非常感谢一些样本片段的工作多部分上传,即使是在目标-C ;-)。
发布于 2013-10-31 17:42:29
差不多还有..。是。
后台传输服务只与NSUrlSessionDownloadTask和NSUrlSessionUploadTask的只使用。不是NSUrlSessionDataTasks,就像这里描述的那样。
除了这个“基本”限制之外,在上传任务中使用后台传输服务是安全的。
10分钟的freepass背景不再适用于iOS 7(基本上,它在那里,但不同),然而,对于NSURLSession和后台传输服务,您不需要它。
我有一个基于下载任务的背景传输服务的博客文章这里。
需要注意的一点是,开始一项任务基本上意味着它实际上会在某个时候开始,并在其他时间完成。这取决于设备是用手机还是Wi,以及(可能)只有iOS (和苹果)才知道的其他因素。
https://stackoverflow.com/questions/19710383
复制相似问题