NSURLSession 后台传输不起作用

Posted

技术标签:

【中文标题】NSURLSession 后台传输不起作用【英文标题】:NSURLSession background transfer not working 【发布时间】:2017-04-03 06:40:37 【问题描述】:

我正在尝试将一系列文件从服务器下载到 ios 应用,目的是即使应用处于后台模式,也会下载这些文件。

我正在使用 NSURLSession 及其系列 API 提供的后台传输

当应用程序在前台模式下运行时,我启动了下载任务,它给了我预期的结果,因为一系列下载运行良好,但是如果我在一系列下载正在进行时按下主页按钮,那么它将立即停止,当我离开时再次进入应用程序下载将恢复。

如果用简单的话 后台传输 甚至对我都不起作用。

编辑

最初我在模拟器中测试它并没有很好地工作,有人评论说要在真实设备中测试它,所以我通过在调试模式下连接真实设备来测试它真的很好,我认为一切都是解决了,但再次让我震惊的是,如果我断开设备与 Xcode 的连接并检查应用程序,它根本不起作用:(

我创建了一个示例应用程序来演示这个问题,请从here下载它

注意:在这个示例应用程序中,我在 didFinishDownloadingToURL 中重新启动了下载调用,以模拟一系列下载文件

谁能帮我解决这个问题?

【问题讨论】:

请贴出相关代码 【参考方案1】:

您没有在 功能 标签中选择正确的背景模式。检查后台获取选项。

另外,如果您只在模拟器中进行测试,请点击菜单中的Debug -> Simulate Background Fetch。否则,模拟器不会启动后台抓取。

【讨论】:

感谢您的意见。我想只是为了使用后台传输(NSURLSessionTask),我们不需要启用后台获取。我假设后台获取完全不同。 不客气 :) 。在将您的应用发送到应用商店时,您最终需要检查后台获取功能以通过 Apple 审核。 哦,真的吗?如果可能的话,您能否分享一个链接,上面写着必须启用后台提取才能通过审核? 从 raywenderlich 查看本教程。 raywenderlich.com/143128/… 但是这里有一条相互矛盾的信息,它说它是可选的。 developer.apple.com/library/content/documentation/IDEs/… 。所以我想既然Apple说它是可选的,它确实是可选的。从来不知道。应该再挖掘一下。对不起,错误信息。但无论如何,我现在不会对我的应用冒险:)。

以上是关于NSURLSession 后台传输不起作用的主要内容,如果未能解决你的问题,请参考以下文章

NSURLSession“完成处理程序”内的导航不起作用

更改 NSURLCache 内存和磁盘容量不起作用

使用 AVPlayer 从 url 流式传输广播 - > iPhone 播放器控件不起作用

调用 http:// 在 ios 9 中不起作用 [重复]

后台获取 performFetchWithCompletionHandler 不起作用?

iOS后台获取不起作用