iOS Download Manager
之前的项目中有类似于百度下载,找了几个开源项目,看了下源码,记录一下,方便自己以后
下载最好要支持后台传输,一般使用的是NSURLSession,NSURLSessionConfiguration使用的是支持background的模式
1、HWDownloadDemo
HWDownloadDemo实现了后台下载,文章iOS 大文件下载、断点续传、后台下载 —— HERO博客也对demo进行详细的说明
Demo下载链接:https://github.com/HeroWqb/HWDownloadDemo
下载的状态包括如下的几种:
typedef NS_ENUM(NSInteger, HWDownloadState) {
HWDownloadStateDefault = 0, // 默认
HWDownloadStateDownloading, // 正在下载
HWDownloadStateWaiting, // 等待
HWDownloadStatePaused, // 暂停
HWDownloadStateFinish, // 完成
HWDownloadStateError, // 错误
};
B、使用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 // 更新全部数据
};
相关文章链接https://blog.csdn.net/hero_wqb/article/details/80407478
2、YCDownloadSession
经过对比model的使用,项目最终选择了第一个第三方SDK HWDownloadManager实现了类型百度下载。