我在新应用中使用Alamofire(基于Alamofire的下载管理器示例)
我需要一些有关使用后台 session 下载文件的说明。
我需要重写SessionDelegate才能使其正常工作?
还是只是backgroundCompletionHandler
?
通常,使用Alamofire在后台处理下载的步骤是什么?
以及如何处理我的应用程序重新启动,下载量不断增加的情况。
最佳答案
更新
基于this amazing tutorial,我整理了一个在GitHub上可用的示例项目。它有一个后台 session 管理的例子。
根据苹果公司的URL Loading System Programming Guide:
因此,显然,通过使用适当的后台 session 配置实例,您的下载将永远不会“不断变化”。
我还发现this answer真的很有帮助。
原始答案
从Alamofire的GitHub page:
默认情况下,顶级方法使用具有默认 session 配置的共享Manager
实例。但是,您可以创建具有后台 session 配置的管理器,如下所示:
let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("com.example.app.background")
let manager = Alamofire.Manager(configuration: configuration)
然后,您可以使用此
Manager
实例发出请求。manager.startRequestsImmediately = true
let request = NSURLRequest(URL: NSURL(string: "your.url.here")!)
manager.request(request)
通过查看其实现,它还具有一个名为
backgroundCompletionHandler
的属性,因此您可以添加一个完成块:manager.backgroundCompletionHandler = {
// do something when the request has finished
}