关闭View后如何在后台运行网络进程?

问题描述:

我正在开发一个聊天应用程序。如果我打开聊天并开始下载该聊天视图控制器的onClick()方法的图像,我如何继续在后台下载该图像(甚至在视图关闭后弹出)。我在WhatsApp中看到过这个。我正在使用Alamofire来下载图像。关闭View后如何在后台运行网络进程?

+0

NSURLSession背景会议倾听iOS 8的推出?它被设计用于下载背景内容中的内容以下载内容,即使该应用程序在两者之间死亡:) –

首先,你应该看到Apple's documentation

如果你的通用任务可以在不到3分钟内完成,使用[UIApplication beginBackgroundTaskWithName]

否则,如果任务与网络相关,则使用NSURLSession

详细信息在the link中描述。

为了在应用程序处于后台时下载内容,或者即使用户将应用程序杀死,仍应继续下载,您应该考虑使用NSURLSession的后台会话配置。

let backgroundSession = URLSessionConfiguration.background(withIdentifier: "abcd") 
let session = URLSession(configuration: backgroundSession) 


let url = URL(string: "abcd") 
session.downloadTask(with: url!, completionHandler: { (url,response,error) in 

}).resume() 
  • 确保您使用唯一的标识符,
  • 尽量使用NSURLsession代表比完成块,其也被称为在文档定制的代表,我DIN想写现成的代码,因此保持完成阻止
  • 如果您的应用程序需要处理某种认证的再处理didRecieveChallenge和其他代表以及:)
  • 如果您的应用程序需要处理的会话过期的情况办理委托办理application:handleEventsForBackgroundURLSession:completionHandler:URLSessionDidFinishEventsForBackgroundURLSession:以及:)

编码快乐:)