下载任务的NSURLsession后台中转服务,App挂起还能用吗?

NSURLsession background transfer service for download task, can it work even when App is suspended?

在提问之前,让我澄清一下我对 iOS 应用状态的理解:


Backgrounded: 在此状态下,您的应用不再处于前台,但它仍然能够 运行 代码。

已暂停: 当您的应用无法再运行 编码时进入此状态。


现在,我想在 App 处于后台时继续下载,即它仍然存在于多任务屏幕中。它正在按预期使用后台传输服务。

但是,在一些教程参考中,我了解到即使应用程序处于后台/暂停状态,您也可以执行下载。即使我的应用程序被暂停,即从多任务屏幕中删除,它还​​能工作吗?

我已经阅读了很多文档,包括 Apple class 关于带有下载任务的后台传输服务的参考资料,但没有人阐明当 App 被暂停(杀死)时下载将无法进行。

感谢您的想法和建议!!!

如果您的应用已被系统挂起(无需从多任务屏幕强制退出),您的后台会话将继续运行。

如果您强制退出应用程序,所有下载任务都将被取消。

以下内容来自backgroundSessionConfigurationWithIdentifier(_:)文档:

If an iOS app is terminated by the system and relaunched, the app can use the same identifier to create a new configuration object and session and retrieve the status of transfers that were in progress at the time of termination. This behavior applies only for normal termination of the app by the system. If the user terminates the app from the multitasking screen, the system cancels all of the session’s background transfers. In addition, the system does not automatically relaunch apps that were force quit by the user. The user must explicitly relaunch the app before transfers can begin again.

多任务处理 UI 中显示的应用不一定在执行代码或获取数据。列出的应用可能会被暂停或根本不会 运行

[[UIApplication sharedApplication] applicationState] 将检查您的应用程序状态,您可以测试您的应用程序。

NSURLSession class 可以在应用程序变为非活动状态时将下载和上传移交给操作系统。与几乎所有的后台执行API一样,如果用户强制退出多任务UI,后台操作将终止

在 iOS 7 中,Apple 添加了对后台获取的支持——一种智能的、按应用程序的 crontab,它会在机会主义的时间唤醒。无法强制后台提取以精确的时间间隔执行。 iOS 在安排未来回调时检查之前后台提取期间使用了多少数据和电池电量。

后台提取也可以由远程推送通知触发,并且具有非常相似的委托方法和相同的完成处理程序。

完整教程在这里

https://blog.newrelic.com/2016/01/13/ios9-background-execution/