NSURLSession从app暂停或崩溃恢复

时间:2015-11-15 17:44:51

标签: ios objective-c

我正在开发一个下载大文件的应用。我已从Apple下载并运行this sample

每当应用程序暂停或我从Xcode重新运行时,我都没有在日志中看到输出以显示下载进度。

我也看到了this question的答案,但我没有看到如何将代码转换为代码已经在样本中使用的代码之外。

您可以在应用重启后如何协助我的应用连接到后台下载。

1 个答案:

答案 0 :(得分:2)

  

每当应用程序暂停或我从Xcode重新运行时,我都没有在日志中看到输出以显示下载进度。

你也不应该期待。

  • 如果应用暂停,它就不会运行;这就是“暂停”的意思。没有任何记录;你的应用程序处于深度冻结状态。如果你恢复(从Xcode重新启动应用程序:相反,点击Springboard中暂停的应用程序图标)日志记录也会恢复。下载时你永远不会“脱节”;你刚睡着了。

  • 如果您在应用仍在运行或暂停时从Xcode重新开始测试,系统会将其视为停止后台下载的信号。

那么,在下载过程中,当您的应用实际终止时,您将如何测试会发生什么?测试方法是在设备上运行,并在下载过程中崩溃您的应用。 (IIRC,Apple的示例提供了一个按钮,可以让您这样做。)在这种情况下,后台下载将继续。然后,您可以从设备再次启动应用程序(而不是从Xcode)。你现在不会在Xcode中获得控制台消息,但你在窗口中获取它们>此设备的设备控制台。

然后您会看到,如果您已正确实施output,则会调用它。如果您随后重新创建后台会话,则将调用您的任务委托方法。您已与背景会话重新联系。