iOS Download Manager

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014084081/article/details/84568503

iOS Download Manager

最近在看下载,找了几个开源项目,看了下源码,记录如下

下载最好要支持后台传输,一般使用的是NSURLSessionNSURLSessionConfiguration使用的是支持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   // 更新全部数据
};

猜你喜欢

转载自blog.csdn.net/u014084081/article/details/84568503