我围绕AFNetworking 2.0的AFHTTPSessionManager构建了一个应用程序及其很好的HTTP便捷方法。我现在需要确保所有这些网络功能都能在后台运行,我很担心。
阅读Apple的文档,我可以看到后台会话不支持数据任务。在简要介绍AFHTTPSessionManager的GET,POST,PUT等实现之后,它似乎全面使用了NSURLSessionDataTask。
我有什么遗漏,或者我有一些重新设计和返工吗?
如果我是对的(我怀疑我是),并且此代码路径不允许我进行后台上传和下载,是否有任何理由我无法包装AFURLSessionManager的其他方法使用非数据任务与当前HTTP方法包装“dataTaskWithRequest:completionHandler”的方式相同吗?例如对于POST我可以使用“uploadTaskWithRequest:fromData:progress:completionHandler”?
我问,因为我想知道这是否可行,为什么AFNetworking开发人员没有使用它,所以AFHTTPSessionManager的便利方法将允许后台传输。
答案 0 :(得分:0)
AFNetworking允许您执行后台请求(但要小心不要使用任何特定于任务的完成块,并确保实现相应的应用委托方法;请参阅AFNetworking 2.0 and background transfers)。您也可以使用requestWithMethod
AFHTTPRequestSerializer
来简化构建请求的过程(尽管如此,IIRC,您不能将HTTPBody
请求与后台上传请求一起使用,因此您可能会必须将请求的正文保存到文件中,然后使用该文件发出后台上传请求。)
但是,在使用后台会话时,您无法使用AFHTTPSessionManager
方法启动NSURLSessionDataTask
任务,这是完全正确的。关于他们为何以这种方式实施,这是一个更适合their issues forum的问题。