# Tiercel **Repository Path**: github-iOS/Tiercel ## Basic Information - **Project Name**: Tiercel - **Description**: 简单易用、功能丰富的纯 Swift 下载框架 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-11 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
## 用法
### 基本用法
一行代码开启下载
```swift
// 创建下载任务并且开启下载,同时返回可选类型的DownloadTask实例,如果url无效,则返回nil
let task = sessionManager.download("http://dldir1.qq.com/qqfile/QQforMac/QQ_V4.2.4.dmg")
// 批量创建下载任务并且开启下载,返回有效url对应的任务数组,urls需要跟fileNames一一对应
let tasks = sessionManager.multiDownload(URLStrings)
```
可以对任务设置状态回调
```swift
let task = sessionManager.download("http://dldir1.qq.com/qqfile/QQforMac/QQ_V4.2.4.dmg")
task?.progress(onMainQueue: true) { (task) in
let progress = task.progress.fractionCompleted
print("下载中, 进度:\(progress)")
}.success { (task) in
print("下载完成")
}.failure { (task) in
print("下载失败")
}
```
可以通过 URL 对下载任务进行操作,也可以直接操作下载任务
```swift
let URLString = "http://dldir1.qq.com/qqfile/QQforMac/QQ_V4.2.4.dmg"
// 通过 URL 对下载任务进行操作
sessionManager.start(URLString)
sessionManager.suspend(URLString)
sessionManager.cancel(URLString)
sessionManager.remove(URLString, completely: false)
// 直接对下载任务进行操作
sessionManager.start(task)
sessionManager.suspend(task)
sessionManager.cancel(task)
sessionManager.remove(task, completely: false)
```
### 后台下载
从 Tiercel 2.0 开始支持原生的后台下载,只要使用 Tiercel 开启了下载任务:
- 手动 Kill App,任务会暂停,重启 App 后可以恢复进度,继续下载
- 只要不是手动 Kill App,任务都会一直在下载,例如:
- App 退回后台
- App 崩溃或者被系统关闭
- 重启手机
如果想了解后台下载的细节和注意事项,可以查看:[iOS 原生级别后台下载详解](https://github.com/Danie1s/Tiercel/wiki/iOS-%E5%8E%9F%E7%94%9F%E7%BA%A7%E5%88%AB%E5%90%8E%E5%8F%B0%E4%B8%8B%E8%BD%BD%E8%AF%A6%E8%A7%A3)
### 文件校验
Tiercel 提供了文件校验功能,可以根据需要添加,校验结果在回调的`task.validation`里
```swift
let task = sessionManager.download("http://dldir1.qq.com/qqfile/QQforMac/QQ_V4.2.4.dmg")
// 回调闭包可以选择是否在主线程上执行
task?.validateFile(code: "9e2a3650530b563da297c9246acaad5c",
type: .md5,
onMainQueue: true)
{ (task) in
if task.validation == .correct {
// 文件正确
} else {
// 文件错误
}
}
```
### 更多
有关 Tiercel 3.0 的详细使用方法和升级迁移,请查看 [Wiki](https://github.com/Danie1s/Tiercel/wiki)
## License
Tiercel is available under the MIT license. See the LICENSE file for more info.