iOS Download Manager
之前的項目中有類似於百度下載,找了幾個開源項目,看了下源碼,記錄一下,方便自己以後
下載最好要支持後臺傳輸,一般使用的是NSURLSession,NSURLSessionConfiguration使用的是支持background的模式
1、HWDownloadDemo
HWDownloadDemo實現了後臺下載,文章iOS 大文件下載、斷點續傳、後臺下載 —— HERO博客也對demo進行詳細的說明
A、下載模型HWDownloadModel,保存有下載狀態,下載的數據
@property (nonatomic, strong) NSData *resumeData; // 下載的數據
@property (nonatomic, assign) HWDownloadState state; // 下載狀態
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實現了類型百度下載。