版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014084081/article/details/84568503
iOS Download Manager
最近在看下载,找了几个开源项目,看了下源码,记录如下
下载最好要支持后台传输,一般使用的是NSURLSession
,NSURLSessionConfiguration
使用的是支持background的模式
TWRDownloadManager
TWRDownloadManager项目好久没有更新了,下载下来的demo,需要修改下才可以正常运行
存在的问题:
- 在下载过程中用户强制退出,再进入App时,又开始重新下载
HWDownloadDemo
HWDownloadDemo实现了后台下载,文章iOS 大文件下载、断点续传、后台下载 —— HERO博客也对demo进行详细的说明
1.下载模型HWDownloadModel
,保存有下载状态,下载的数据
@property (nonatomic, strong) NSData *resumeData; // 下载的数据
@property (nonatomic, assign) HWDownloadState state; // 下载状态
下载的状态包括如下的几种:
typedef NS_ENUM(NSInteger, HWDownloadState) {
HWDownloadStateDefault = 0, // 默认
HWDownloadStateDownloading, // 正在下载
HWDownloadStateWaiting, // 等待
HWDownloadStatePaused, // 暂停
HWDownloadStateFinish, // 完成
HWDownloadStateError, // 错误
};
2.使用FMDB来保存下载模型,对数据进行增删改查
对更新数据库的操作类型,也进行了分类,如下:
typedef NS_OPTIONS(NSUInteger, HWDBUpdateOption) {
HWDBUpdateOptionState = 1 << 0, // 更新状态
HWDBUpdateOptionLastStateTime = 1 << 1, // 更新状态最后改变的时间
HWDBUpdateOptionResumeData = 1 << 2, // 更新下载的数据
HWDBUpdateOptionProgressData = 1 << 3, // 更新进度数据(包含tmpFileSize、totalFileSize、progress、intervalFileSize、lastSpeedTime)
HWDBUpdateOptionAllParam = 1 << 4 // 更新全部数据
};