如果应用程序从任务pipe理器中被终止,NSUrlSession是否会继续文件传输?

为了更好地理解NSUrlSession我尝试了从网上的各种样例(最后一个是这个 NSUrlSession

我希望看到的是:即使触发它们的应用程序被杀死(例如用户通过任务pipe理器),文件下载也将继续。 但是,这似乎并没有发生。

这是configuration问题还是后台文件传输不起作用,如果应用程序终止? 我认为整个想法是,iOS将重新启动应用程序。

否 – 当用户强行退出时,应用程序不会重新启动以用于后台下载。

应用程序的iOS8文档:didReceiveRemoteNotification:fetchCompletionHandler:说:

使用此方法处理传入的应用程序的远程通知。 与应用程序不同的是:didReceiveRemoteNotification:只在应用程序在前台运行时调用,方法是当您的应用程序在前台或后台运行时调用此方法。 另外,如果启用了远程通知后台模式,系统将启动您的应用程序(或将其从暂停状态唤醒),并在推送通知到达时将其置于后台状态。 但是,如果用户强制退出,系统不会自动启动您的应用程序。 在这种情况下,用户必须重新启动应用程序或在系统尝试再次自动启动应用程序之前重新启动设备。

如果系统杀死了您的应用程序,并且您的后台会话有活动下载,则您的下载将继续,系统将在下载完成时启动您的应用程序。 但是,如果用户强制退出您的应用程序,所有任务将被取消。

backgroundSessionConfigurationWithIdentifier的文档:

如果iOS应用程序被系统终止并重新启动,则应用程序可以使用相同的标识符来创build新的configuration对象和会话,并检索终止时正在进行的传输状态。 此行为仅适用于系统正常终止应用程序。 如果用户从多任务屏幕终止应用程序,则系统取消所有会话的后台传输。 另外,系统不会自动重新启动用户强制退出的应用程序。 用户必须明确重新启动应用程序才能再次开始传输。