使用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?