在iOS

时间:2016-03-31 13:02:31

标签: ios objective-c download nsurlsession nsurlsessiondownloadtask

我们有一个下载用户内容的应用程序。我们的文件可能很大,通常我们的用户会批量下载。我们的用户在下载时遇到了不同的麻烦。我们想重构整个下载过程并可能使用库。我们希望您对问题和解决方案有所了解。

当前流程:

我们有项目列表,用户可以下载,每个项目由一个文件或多个文件组成(用户不知道这一点)。用户可以通过按下列表中的“下载按钮”来启动项目的下载,并且我们支持并发下载项目。请记住,每个项目可以有多个文件或单个文件。我们还需要单独显示项目下载的进度。我们使用NSURLConnection下载自iOS 4以来开发的文件。

问题:

  • 在下载期间,如果出现网络故障或某些未知原因 下载卡住了。
  • 在下载过程中丢失了一些文件数据
  • 无法在后台下载(我们必须保留屏幕 唤醒,例如,使下载继续等,因为它是 在iOS 4上开发)
  • 下载完成后没有文件完整性检查
  • 继续下载

我们需要什么:

  • 批量下载大文件,通常为10到50个文件,大小约为10 到每个文件200 MB
  • 当出现连接问题时暂停(丢失,烦恼/致命) 慢),连接回来时自动恢复
  • 在后台下载(app暂停或关闭)
  • 当应用程序崩溃或终止时,在后台继续下载
  • 暂停,用户取消下载
  • 下载完成时的完整性检查
  • 下载过程中的完整性检查(在下载的部件上), 在下载完成之前自动重新下载坏的部分
  • 获取进度信息(下载列表,下载的列表,百分比 下载,预计完成时间,下载速度等。)
  • 快速下载的多个线程
  • 从iOS 7到以后的支持

我们可以在哪个解决方案中确保满足我们的所有需求?我们如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

好吧,它可以通过使用NSUrlSession(NSURLSessionDataTask,NSURLSessionDownloadTask)简单地实现 - 它将解决所有下载问题(快速下载(并发下载),恢复,暂停,取消等多个线程),包括后台下载。它还支持完成块,这有助于文件完整性检查。
要检查Internet连接以暂停或恢复下载,可以使用Reachability库。
如果您希望使用第三方库,我强烈建议您使用AFNetWorking(可以通过此库完成所有要求) - > https://github.com/AFNetworking/AFNetworking

此外,本教程可以帮助您满足您的需求 - http://www.appcoda.com/background-transfer-service-ios7/