我尝试过网上的各种样本(最后一个是this one),以便更好地了解NSUrlSession
。
我希望看到的内容:即使触发它们的应用程序被杀死(例如用户通过任务管理器),文件下载仍将继续。然而,这似乎并没有发生。
如果应用程序被终止,这是配置问题还是后台文件传输不起作用? 我认为整个想法是iOS将重启应用程序。
答案 0 :(得分:9)
如果系统杀死您的应用并且您的后台会话具有有效下载,则您的下载将继续,系统将在下载完成后启动您的应用。但是,如果用户强制退出您的应用,则会取消所有任务。
Documentation for backgroundSessionConfigurationWithIdentifier:
如果iOS应用程序被系统终止并重新启动,则该应用程序可以 使用相同的标识符来创建新的配置对象和 会话并检索正在进行的传输的状态 终止的时间。此行为仅适用于正常情况 系统终止应用程序。 如果用户终止该应用 从多任务屏幕,系统取消所有会话 后台传输。此外,系统不会自动进行 重新启动用户强制退出的应用程序。用户必须 在转移再次开始之前明确重新启动应用程序。
答案 1 :(得分:0)
否 - 当用户强制退出时,应用程序不会重新启动后台下载。
application:didReceiveRemoteNotification:fetchCompletionHandler:的iOS8文档说:
使用此方法处理应用的传入远程通知。 与应用程序不同:didReceiveRemoteNotification:方法,即 只有当您的应用程序在前台即系统中运行时才会调用 当您的应用在前台运行或运行时调用此方法 背景。此外,如果您启用了远程通知 在后台模式下,系统启动你的应用程序(或从中唤醒它) 暂停状态)并在推送时将其置于后台状态 通知到了。但是,系统不会自动进行 如果用户强行退出,请启动您的应用。在那种情况下, 用户必须重新启动应用程序或在系统之前重新启动设备 尝试再次自动启动您的应用。