3

我围绕 AFNetworking 2.0 的 AFHTTPSessionManager 及其漂亮的 HTTP 便利方法构建了一个应用程序。我现在需要确保所有这些网络功能都可以在后台运行,我很担心。

阅读 Apple 的文档,我可以看到后台会话不支持数据任务。在简要查看了 AFHTTPSessionManager 对 GET、POST、PUT 等的实现之后,它似乎全面使用了 NSURLSessionDataTask。

有什么我遗漏的,还是我需要重新设计和返工?

如果我是对的(我怀疑我是对的),并且这个代码路径不允许我在后台上传和下载,有什么理由我不能包装 AFURLSessionManager 的其他使用非数据任务的方法与当前 HTTP 方法包装“dataTaskWithRequest:completionHandler”的方式相同吗?例如对于 POST,我也许可以使用“uploadTaskWithRequest:fromData:progress:completionHandler”?

我在问,因为我想知道这是否是一条可行的路线,为什么 AFNetworking 开发人员不使用它,以便 AFHTTPSessionManager 的便捷方法允许后台传输。

4

1 回答 1

0

AFNetworking 允许您执行后台请求(但请注意不要使用任何特定于任务的完成块,并确保您实现了适当的应用程序委托方法;请参阅AFNetworking 2.0 和后台传输)。您可能也可以使用requestWithMethodAFHTTPRequestSerializer简化构建请求的过程(尽管,IIRC,您不能HTTPBody将请求与后台上传请求一起使用,因此您可能必须将请求的正文保存到文件中,然后发出您的使用该文件的后台上传请求)。

但是您绝对正确,您不能在使用后台会话时使用这些AFHTTPSessionManager方法来启动任务。NSURLSessionDataTask关于他们为什么以这种方式实施它,这是一个更适合他们的问题论坛的问题

于 2015-02-12T14:26:23.620 回答