我正在一个新应用程序中使用Alamofire(基于Alamofire的下载管理器示例)

通常,使用Alamofire在后台处理下载的步骤是什么?

推荐答案

更新

基于this amazing tutorial,我总结了GitHub上的一个示例项目.它有一个后台会话管理的例子.

根据苹果URL Loading System Programming Guide强:

在iOS和OS X中,当用户重新启动你的应用程序时,你的应用程序

显然,在后台使用"flux-by-configuration"是不合适的.

我还发现this answer个真的很有用.

原始答案

来自阿拉莫菲尔的GitHub page:

应用程序可以为后台和临时应用程序创建管理器

默认情况下,顶级方法使用具有默认会话配置的共享Manager实例.但是,您可以创建具有后台会话配置的管理器,如下所示:

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
    }

Swift相关问答推荐

如何在SwiftUI中创建具有圆角顶部和锯齿状底部边缘的自定义Shape,类似于撕破的纸?

SwiftUI:为什么@State在子视图中持续存在?

查找数组中 ** 元素 ** 的属性的最小值和最大值

如何在SWIFT Memory中处理对VAR数组的更新(对COW感到困惑)

如何通过 Enum 属性使用新的 #Predicate 宏获取

SwiftUI如何能够在Text中使用字符串字面量来创建LocalizedStringKey?

TextField 键入未完成

如何制作具有 2 个视图的 3D 旋转动画?

如何更改 Picker 的边框 colored颜色

在运行时访问 UIView 宽度

如何在界面生成器中创建 UILayoutGuide?

在 Swift 4 中,如何删除基于块的 KVO 观察者?

iOS:检测设备是否为 iPhone X 系列(无框)

CMutablePointer - 如何访问它?

iOS/Swift:如何检测 UITextField 上的touch 动作

如何在 Swift 中将 NSURL 转换为字符串

Swift 的 JSONDecoder 在 JSON 字符串中有多种日期格式?

使用 JSONEncoder 对类型为 Codable 的变量进行编码

swift - 我可以从我的自定义初始化方法中调用 struct 默认成员初始化吗?

通过单击表格视图中的单元格打开新的视图控制器 - Swift iOS