NSURLSession 后台上传 - 需要启用后台模式?
Posted
技术标签:
【中文标题】NSURLSession 后台上传 - 需要启用后台模式?【英文标题】:NSURLSession background upload - need to enable background modes? 【发布时间】:2015-03-16 20:25:03 【问题描述】:我正在实例化一个NSURLSession
来做几个这样的后台上传:
sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:myIdentifier];
在大多数情况下,一切似乎都正常,但我想知道如果我所做的只是后台上传而不是下载,是否需要在 p.list 中添加后台 Fetch 键?我找不到说明我应该或不应该的文件。特别是在 XCode 5 + 上,我想知道是否在 Capabilities>Background 模式下,我应该启用还是不启用后台获取,如果我所做的只是后台上传,请注意我确实在上传完成后阅读了响应,这可能被视为“下载”。
【问题讨论】:
【参考方案1】:官方指南Background Execution声明三种后台执行方式:
-
执行有限长度任务 - 使用
UIApplication
方法beginBackgroundTaskWithName:expirationHandler:
执行有限
时间任务。
在后台下载内容 - 使用 NSURLSession
来
下载内容。您的应用程序提供的NSURLSession
运行在
单独的系统级守护进程,完成后,通过
完成处理程序。 (你上面提到的实现)
实现长时间运行的任务 - 需要运行的任务
很长时间,都在这个类别下处理,如音频,voip,
位置,下载过程,更新内容。这些类型的任务
需要 info.plist 中提到的特殊 UIBackgroundModes
键。
所以回答你的问题,你不需要UIBackgroundModes
键,直到你不属于长期运行的任务类别。
【讨论】:
以上是关于NSURLSession 后台上传 - 需要启用后台模式?的主要内容,如果未能解决你的问题,请参考以下文章
iOS NSURLSession 实现网络请求-文件下载-上传-后台下载