gpt4 book ai didi

ios - 在 iOS 上使用具有文件完整性的 NSURLSession 批量下载文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:28 27 4
gpt4 key购买 nike

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

当前进程:

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

问题:

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

我们需要什么:

  • 批量下载大文件,通常为 10 到 50 个文件,大小在 10 左右每个文件不超过 200 MB
  • 出现连接问题时暂停(丢失、麻烦/致命慢),连接恢复时自动恢复
  • 在后台下载(应用暂停或关闭)
  • 当应用程序崩溃或终止时在后台恢复下载
  • 用户暂停、取消下载
  • 下载完成后进行完整性检查
  • 在下载过程中进行完整性检查(针对下载的部分),下载完成前自动重新下载坏的部分
  • 获取进度信息(下载列表、已下载的、百分比下载时间、预计完成时间、下载速度等)
  • 多线程快速下载
  • 支持 iOS 7 及更高版本

在哪种解决方案中我们可以确保满足我们的每一个需求?我们怎样才能做到这一点?

最佳答案

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

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

关于ios - 在 iOS 上使用具有文件完整性的 NSURLSession 批量下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36334305/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com