在后台下载多个文件(仅适用于iOS 7)

3

我正在开发一个播客应用程序,它只能在iOS 7上运行,并具有允许在后台模式下同步和下载最近剧集的功能。

因此,关于同步,我实现了 application:performFetchWithCompletionHandler 方法,并在其中调用同步方法。当同步完成时,我会使用UIBackgroundFetchResultNewData调用 completionHandler,如果失败,则调用UIBackgroundFetchResultFailed。但是,当我运行下载管理器以开始下载所有新剧集时,它可能需要很长时间,取决于网络质量和文件大小。后台模式会在某些点冻结并暂停最近的下载。

如何正确设计后台下载?

或者提供一些链接,这些链接可以清楚地描述如何在后台下载文件。


我正在解决一个类似的问题。不知道AFNetworking 2.0是否支持这个功能。 - hpique
4
你有看过2013 WWDC会议上的这个话题吗?背景下载的整个概念是由系统有效地管理。这并不像一个UNIX后台下载应用程序,如果没有其他活动,它将以100%的CPU运行。苹果公司对设备非常节制,所以它会限制下载速度。正如他们所说,如果你一次下载4或10个文件,而不是一个接一个地请求,你可能会获得更好的服务。请注意,如果设备未连接电源,系统将非常限制资源。 - David H
@DavidH,感谢您提供的信息,非常感激。但是您有没有关于如何正确实现后台下载的想法或思路呢? - haik.ampardjian
1
我最近将 NSURLConnection 代码转换为使用 NSURLSession。这花费了我2到3天的时间 - 比我预期的时间更长。它只在前台工作 - 我计划支持后台传输,但我知道从 WWDC 视频中有很多细节(这里的其他帖子也是如此)。没有什么可以替代投入时间阅读和观看苹果关于此的内容。 - David H
1个回答

0

当下载大量文件时,我观察到相同的行为。

看起来,当您的应用程序被挂起时,将所有下载任务添加到后台会话中比每次完成一个任务并调用委托时添加新的下载任务要更好。

另一个选择是使用NewsstandKit。后台下载非常顺畅,但您有一些限制,例如24小时阈值,并且您的应用程序将隐藏在报摊中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接