我有问题使用AFURLSessionManager实现后台任务。 我正在用BaseURL和SessionConfiguration创建一个新的AFHTTPSessionManager,使用NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:
并使用便捷方法创建POST请求。使用AFNetworking 2.0与后台任务
当我运行我的应用程序时,第一个请求会正常发送,但第二个请求会返回A background URLSession with identifier {ID} already exists!
,并且会使应用程序崩溃。
我看过苹果的WWDC 2013条的视频,他们建议你创建会话配置只有一次,用
dispatch_once(&onceToken, ^{
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:@"com.yourcompany.appId.BackgroundSession"];
session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
});
然而,有session
属性AFURLSessionManager被设置为只读,没有办法,我通过自定义NSURLSession,只有NSURLSessionConfiguration,那就是里面AFURLSessionManager:init
创建:
self.session = [NSURLSession sessionWithConfiguration:self.sessionConfiguration delegate:self delegateQueue:self.operationQueue];
我觉得我做错了什么,但我还能怎么支持后台任务使用AFNetworking?
我应该在任何时候调用invalidateAndCancel? – 2014-10-19 21:14:52
我想你可以,但除非有令人信服的需求,否则我不会打扰。感觉像过早优化我... – Rob 2014-10-19 21:42:25
晚评论:我的应用程序使用共享的'AFHTTPSessionManager'对象定期下载(用户提示),我想添加后台更新。我应该为此创建另一个“AFHTTPSessionManager”吗?或者是否可以在运行中更改'NSURLSessionConfiguration'? – Koen 2016-03-24 12:24:23