NSURLSession 后台配置在 macOS 上的好处

Posted

技术标签:

【中文标题】NSURLSession 后台配置在 macOS 上的好处【英文标题】:NSURLSession background configuration benefits on macOS 【发布时间】:2017-04-08 20:05:03 【问题描述】:

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);

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于NSURLSession 后台配置在 macOS 上的好处的主要内容,如果未能解决你的问题,请参考以下文章

iOS NSURLSession 实现网络请求-文件下载-上传-后台下载

iOS NSURLSession 实现网络请求-文件下载-上传-后台下载

NSURLSession 导致 0B 图像上传到 GCS

NSURLSession 后台任务:避免重复

NSURLSession:后台崩溃,因为没有调用上传委托

NSURLSession:无法与后台传输服务通信