OStack程序员社区-中国程序员成长平台

标题: ios - 使用 AFNetworking 2.0 处理后台任务 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 12:09
标题: ios - 使用 AFNetworking 2.0 处理后台任务

我在使用 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-推荐答案


你不能实例化一个新的AFHTTPSessionManager然后改变它的session来引用一些单例NSURLSession是正确的。因此,您应该将 AFHTTPSessionManager 对象本身设为可在整个应用程序中重用的共享实例。

end of this answer ,我提供了一个使用 AFNetworking 进行后台 session 的示例。

关于ios - 使用 AFNetworking 2.0 处理后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26453822/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4