使用AFNetworking 2.0和后台任务

我遇到了使用AFURLSessionManager实现后台任务的问题。 我正在用BaseURL和SessionConfiguration创建一个新的AFHTTPSessionManager,使用NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:并使用便捷方法创建一个POST请求。

当我运行我的应用程序时,第一个请求会正常发送,但第二个请求会返回A background URLSession with identifier {ID} already exists! 它会崩溃应用程序。

我观看了Apple的WWDC 2013视频,他们建议您仅使用一次创建会话配置

dispatch_once(&onceToken, ^{
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:@"com.yourcompany.appId.BackgroundSession"];
    session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
});

但是,AFURLSessionManager的session属性设置为只读,并且我无法传递在AFURLSessionManager内创建的自定义NSURLSession,只有一个AFURLSessionManager:init

self.session = [NSURLSession sessionWithConfiguration:self.sessionConfiguration delegate:self delegateQueue:self.operationQueue];

我觉得我做错了什么,但是我还有什么可以使用AFNetworking支持后台任务?


您无法实例化新的AFHTTPSessionManager ,然后将其session更改为引用某个单例NSURLSession 。 因此,您应该使AFHTTPSessionManager对象本身成为可在整个应用程序中重用的共享实例。

在这个答案的最后,我提供了一个使用AFNetworking进行后台会话的例子。

链接地址: http://www.djcxy.com/p/96777.html

上一篇: Using AFNetworking 2.0 with background tasks

下一篇: AFNetworking 2.0 Supports Background task for iOS 6 and iOS 7 Both?