AFNetworking 2.0 是不是支持后台任务? - IOS 7

Posted

技术标签:

【中文标题】AFNetworking 2.0 是不是支持后台任务? - IOS 7【英文标题】:Does AFNetworking 2.0 Supports Background task? - iOS 7AFNetworking 2.0 是否支持后台任务? - IOS 7 【发布时间】:2013-11-18 11:45:38 【问题描述】:

我正在使用带有 NSURLSession 的 Afnetworking 2.0 库。

我在 AFURLSessionManager 中发现他们使用默认会话配置会话,所以如果我需要在后台下载图像,那么我必须使用后台配置设置会话。

所以,我必须为此更改 AFNetworking 库,或者在 AFNetworking 2.0 中有任何其他方式。

【问题讨论】:

你看UIImageView+AFNetworking了吗? 【参考方案1】:

来自Using NSURLSession:

NSURLSession 类支持在您的应用暂停时进行后台传输。后台传输仅由使用后台会话配置对象(由调用 backgroundSessionConfiguration: 返回)创建的会话提供。

如果您想这样做,您必须配置您的 AFHTTPSessionManager 以使用后台会话配置:

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:@"com.myApp.backgroundDownloadSession"]
AFHTTPSessionManager *backgroundManager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:configuration];

AFNetworking 将自己设置为代理。来自 NSURLSession 文档:

[T]该代表将被保留,直到向该代表发送URLSession:didBecomeInvalidWithError: 消息

因此,您的经理会在本次会议期间一直坚持下去。

两个旁注:

    您可能应该使用单独的AFHTTPSessionManager 进行后台传输(大型下载等)。您不希望所有请求都被分配一个后台 URL 会话。

    如果您想在不使用 AFNetworking 的情况下检索响应,请注意后台会话标识符是什么(在我的示例代码中为“com.myApp.backgroundDownloadSession”):

    新会话配置的标识符,对您的应用来说是唯一的。您的应用可以稍后通过创建具有相同标识符的新后台会话来检索下载或上传响应。

【讨论】:

@yasirmturk 这个解决方案只有 ios 8 吗? ackgroundSessionConfiguration: 实际上在 iOS 8 中已被弃用。 对不起,我以为是backgroundSessionConfigurationWithIdentifier @yasirmturk 没关系。

以上是关于AFNetworking 2.0 是不是支持后台任务? - IOS 7的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 2.0 - 是不是使用子类?

AFNetworking 2.0:是不是可以将纯 json 放入 POST 请求的正文中?

如何使用 AFNetworking-2.0 执行 JSON 编码的 GET 请求?

AFNetworking 2.0 - 在监控进度的同时批量下载图像

使用 AFNetworking 2.0 签署 API 请求

从 AFNetworking 1.3 迁移到 AFNetworking 2.0 的问题