我在使用 AFURLSessionManager 实现后台任务时遇到问题。
我正在创建一个带有 BaseURL 和 SessionConfiguration 的新 AFHTTPSessionManager,使用 NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier: 并使用便捷的方法来创建 POST 请求。
当我运行我的应用程序时,第一个请求正常发送,但第二个请求返回标识符为 {ID} 的后台 URLSession 已存在! 并导致应用程序崩溃。
我看过 Apple 的 WWDC 2013 视频,他们建议您只创建一次 session 配置,使用
dispatch_once(&onceToken, ^{
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration"com.yourcompany.appId.BackgroundSession"];
session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
});
但是,AFURLSessionManager 的 session 属性设置为只读,我无法传递自定义 NSURLSession,只有一个 NSURLSessionConfiguration,它是在 AFURLSessionManager:init 中创建的>:
self.session = [NSURLSession sessionWithConfiguration:self.sessionConfiguration delegate:self delegateQueue:self.operationQueue];
我觉得我做错了什么,但我还能如何使用 AFNetworking 支持后台任务?
Best Answer-推荐答案 strong>
你不能实例化一个新的AFHTTPSessionManager 然后改变它的session 来引用一些单例NSURLSession 是正确的。因此,您应该将 AFHTTPSessionManager 对象本身设为可在整个应用程序中重用的共享实例。
在 end of this answer ,我提供了一个使用 AFNetworking 进行后台 session 的示例。
关于ios - 使用 AFNetworking 2.0 处理后台任务,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/26453822/
|