2

在 iOS 上,使用后台配置初始化 NSURLSession 至关重要,以便在应用程序处于后台时获得上传和下载的好处:

Swift 2 中的示例:

let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("SomeSessionName");
NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil);

在 OSX 10.10+ 上,使用后台会话配置是否有任何好处,即使应用程序当前不在焦点范围内,也可以持续上传或下载?根据我的经验,默认会话配置不太容易受到错误的影响:

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration();
NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil);
4

1 回答 1

4

在 OS X 上,即使用户退出应用程序,后台下载任务也会继续运行(只要用户不强制退出应用程序,IIRC)。与 iOS 不同,它不会在下载完成后在后台重新启动您的应用程序;相反,您的应用程序会在用户手动重新启动应用程序并且您的应用程序重新与现有的命名后台会话关联后发现下载已完成。

因此,在 OS X 上使用它们的最常见原因是用于下载大型数据集的游戏。您可以在后台启动下载并让用户继续玩游戏(无需扩展关卡或其他),即使用户退出游戏也会继续下载,但下次用户运行游戏时,下载将可用于安装。

也就是说,它在 OS X 上的重要性要小得多,因为您可以选择派生一个继续运行和下载的子进程。

于 2017-04-26T01:05:07.537 回答