如何执行代码后台下载?

时间:2016-12-20 19:33:51

标签: ios swift download background

我正在开发一个应用程序,它需要在第一次启动时下载大量数据(大约1GB的图像)。目前我正在使用库MZDownloadManager来执行下载。该库实现了下载的后台模式,我甚至将其设置为目标的功能。基本上我有这种情况:

  • 我打电话给一个给我一个json的API
  • 我保存了Core Data中的所有数据
  • 我保存了要下载到数组中的所有图片网址
  • 我保存核心数据
  • 我开始下载
    • 我一次下载1个项目
    • 项目完成后,我将本地路径保存在Core Data中并从网址数组中删除
    • 我开始新的下载
  • 当一切都完成后,我会显示隐藏进度条的UI

我想让用户在执行下载时将应用程序置于后台。它在Simulator上工作得很好,但在设备上却没有。我认为在模拟器上工作是因为Mac的内存量很大。你有什么建议吗?

2 个答案:

答案 0 :(得分:0)

NSURLSession类支持后台文件下载。即使您的应用程序被终止,它也会下载您的文件,如果需要,下载完成后会在后台重新启动您。

答案 1 :(得分:0)

要支持后台下载,您必须配置NSURLSession对象。要配置会话,必须首先创建NSURLSessionConfiguration对象并将多个属性设置为适当的值。然后,在创建会话时,将该配置对象传递给NSURLSession的相应初始化方法。

创建支持后台下载的配置对象如下:

  • 首先使用backgroundSessionConfigurationWithIdentifier创建配置对象:NSURLSessionConfiguration
  • 的方法
  • 根据需要配置配置对象的sessionSendsLaunchEventsdiscretionary等任何其他属性。
  • 使用配置对象创建NSURLSession对象

示例: -

 let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("bgSessionConfiguration")
    configuration.discretionary = true
    configuration.allowsCellularAccess = true //default true
    let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)