建立网络连接后,我可以让iOS 7在后台发送图片吗?

建立网络连接后,我可以让iOS 7在后台发送图片吗?,ios,ios7,background,task,nsurlsession,Ios,Ios7,Background,Task,Nsurlsession,我正在为iOS 7构建一个应用程序,允许用户选择图片并将其上传到服务器。在一个完美的世界里,用户可以选择图片,按upload并关闭应用程序。 我查看了NSURLSession以确定这一点,但它似乎只接受了一个文件。是否有任何方法可以像NSURL请求一样发送NSData?另外,当未连接到internet时,是否有任何方法可以在后台对internet连接进行应用程序轮询,并使其在建立连接时发送图片?我认为使用早期版本的iOS是不可能的,但iOS 7似乎有一些关于后台任务的新选项。 提前感谢您的帮助

我正在为iOS 7构建一个应用程序,允许用户选择图片并将其上传到服务器。在一个完美的世界里,用户可以选择图片,按upload并关闭应用程序。 我查看了NSURLSession以确定这一点,但它似乎只接受了一个文件。是否有任何方法可以像NSURL请求一样发送NSData?另外,当未连接到internet时,是否有任何方法可以在后台对internet连接进行应用程序轮询,并使其在建立连接时发送图片?我认为使用早期版本的iOS是不可能的,但iOS 7似乎有一些关于后台任务的新选项。 提前感谢您的帮助

几点想法:

  • 后台上载必须使用文件,这是正确的。因此,只需将
    NSData
    保存到文件中(例如,使用
    writeToFile
    方法),然后使用该文件路径即可

  • 关于检查互联网连接,后台
    NSURLSession
    会为您处理,因此,不,您不必这样做

  • 关于早期iOS版本中的后台上载,您可以启动上载,但当应用程序在后台运行时,您可以明确请求多一点时间来完成这项有限长度的任务,同时使用
    UIBackgroundTaskIdentifier
    。请参阅《iOS应用程序编程指南》中应用程序状态和多任务部分的讨论

    这并不像新的后台
    NSURLSession
    功能那样强大(在应用任意逻辑方面,哪一个更聪明,这样你的应用程序就不会对前台应用程序产生显著的负面影响,控制是否允许通过手机连接进行上传,允许更长时间的请求,即使你的应用程序被终止(例如,由于内存压力)也可以工作,等等。)。但是
    UIBackgroundTaskIdentifier
    对于7之前的iOS版本是一个可能的解决方案,在7之前的版本中,即使用户离开了你的应用程序,你也希望给上传请求一个完成的机会


  • 回复:您对“GOOD Dynamics SDK”的评论,我很快地看了看。它确实允许基于SDK的应用程序到应用程序文档共享。我不知道这是否意味着它在这个过程中写入一个加密的磁盘文件,或者它是否使用加密文件夹存储所有内容。如果你有iOS访问该文件的权限,并且有一种在服务器上解密该文件的方法,那么你就有机会使用基于文件的background upload magic.

    感谢您的澄清!写入文件可能会很困难,因为我使用的框架将应用程序放在安全容器中。该框架可能不允许我将文件放在安全容器外部或NSURLSERSESSION从内部获取文件。第二点是好消息,如果我成功创建了file、 NSURLSession将被拾取并延迟,直到internet连接可用。我可以通过cell连接强制上载,还是iOS为我决定?@FreekHelm很抱歉听到您的框架限制。如果您确实正确,那么您可能无法使用后台会话。另外,如果安全性如此重要,请你可能会考虑使用短时<代码> NSurLSeStices构图而不是标准。在第二点上,这对你来说不是好消息,因为它只适用于后台会话(我们已经得出结论,你不能使用)。使用标准会话,你必须检查自己是否可用。问题,
    NSURLSessionConfiguration
    不能做到这一点。它有“允许跨单元连接”,但这是相反的问题。如果您确实需要“强制跨单元连接”,请使用可达性来确定连接类型,然后相应地采取行动。“将应用程序放入安全容器”是什么意思意思是说?每个
    .ipa
    都是一个安全的容器。文档文件夹等存在于“应用程序”之外。@ClayBridges我认为他的要求是,他无法在持久存储中存储任何内容(例如,完成类似于通过
    临时会话配置
    实现的业务需求,确保设备一旦遭到破坏,不会有任何机密信息滞留)。显然,如果他可以将文件保存到Documents文件夹或任何位置,那么使用
    NSURLSessionUploadTask
    就可以了。但你是对的,也许我不应该理所当然地接受“安全容器外”的评论。