我正在为iOS 7构建一个应用程序,允许用户选择图片并将其上传到服务器。在完美的世界中,用户可以选择图片,按上传并关闭应用程序。 我查看了NSURLSession来建立这个,但似乎只需要一个文件。有什么方法可以像在NSURLRequest中一样发送我的NSData吗?此外,当没有连接到互联网时,有什么方法可以让我在后台进行互联网连接的应用程序轮询,并使其在建立连接时发送图片?我不认为可以使用早期版本的iOS,但iOS 7似乎有一些关于后台任务的新选项。 在此先感谢您的帮助!
答案 0 :(得分:1)
有几点想法:
背景上传必须使用文件才是正确的。因此,只需将NSData
保存到文件中(例如使用writeToFile
方法),然后使用该文件路径。
关于检查互联网连接,后台NSURLSession
会为您处理,所以,不,您不必这样做。
关于早期iOS版本中的后台上传,您可以启动上传,但在应用程序在后台运行UIBackgroundTaskIdentifier
时,显式请求更多时间来完成此有限长度任务。请参阅 iOS应用程序编程指南的应用程序状态和多任务处理部分中的Executing a Finite-Length Task in the Background讨论。
这并不像新的后台NSURLSession
功能那样强大(这对于应用自由裁量逻辑更加聪明,因此您的应用不会对前台应用产生重大不利影响,控制是否允许进行上传单元连接,允许更长的请求,即使您的应用程序被终止(例如,由于内存压力)等,也可以正常工作。但UIBackgroundTaskIdentifier
是7版之前的iOS版本的可能解决方案,即使用户已离开您的应用,您也希望上传请求有机会完成。
答案 1 :(得分:0)
Re:关于“GOOD Dynamics SDK”的评论,我很快就看了一下。它确实允许基于SDK的应用程序到应用程序文档共享。我不知道这是否意味着它在进程中写入单个加密的磁盘文件,或者它是否使用加密文件夹来存储所有内容。如果您有对该文件的iOS访问权限,以及在服务器上解密它的方法,那么您将有机会使用基于文件的后台上传魔术。