测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2016年7月 |
SPM支持 SPM | ✗ |
由 James Huynh 维护。
依赖 | |
FileMD5Hash | ~> 2.0.0 |
ReachabilitySwift | ~> 2.3.3 |
JHDownloadManager 通过 CocoaPods 提供。要安装它,只需将以下行添加到 Podfile 中
pod "JHDownloadManager", "~> 1.0.2"
JHDownloadManager
可以对一批 URL 字符串或 NSURL
对象执行下载。
NSURL
对象fileSize
,下载管理器将触发一个 HEAD
请求来查询内容长度,以填充《fileSize》。fileSize
。默认文件散列算法是 SHA1。您可以通过以下方法进行更改let downloadManager = JHDownloadManager.sharedInstance
downloadManager.fileHashAlgorithm = FileHashAlgorithm.MD5
import JHDownloadManager
let downloadManager = JHDownloadManager.sharedInstance
downloadManager.downloadBatch([
[
"url": "http://87.76.16.10/test10.zip",
"destination": "test/test10.zip",
"fileSize": 11536384,
"checksum": "5e8bbbb38d137432ce0c8029da83e52e635c7a4f",
"identifier": "Content-1001"
],
[
"url": "http://speedtest.dal01.softlayer.com/downloads/test100.zip",
"destination": "test/test100.zip",
"fileSize": 104874307,
"checksum": "592b849861f8d5d9d75bda5d739421d88e264900",
"identifier": "Content-1002"
]
])
downloadManager
实例中,然后稍后调用 startDownloadingCurrentBatch
downloadManager.addBatch([
...
])
...
downloadManager.startDownloadingCurrentBatch()
let downloadManager = JHDownloadManager.sharedInstance
downloadManager.setInitialDownloadedBytes(1024)
let downloadManager = JHDownloadManager.sharedInstance
downloadManager.setTotalBytes(1048576)
let downloadManager = JHDownloadManager.sharedInstance
downloadManager = FileHashAlgorithm.MD5;
// downloadManager.fileHashAlgorithm = FileHashAlgorithm.SHA512;
// downloadManager.fileHashAlgorithm = FileHashAlgorithm.SHA1; // default
JHDownloadManagerUIDelegate
可用于更新批量下载的进度和整批的完成状态
// let downloadManager = JHDownloadManager.sharedInstance
// downloadManager.uiDelegate = self;
// ...
func didReachProgress(progress:Float) {
// this method runs on main thread
// ... update progress bar or progress text here
}
func didFinishAll() {
// this method runs on main thread
// ... update completed status of the whole batch
}
func didFinishOnDownloadTaskUI(task:JHDownloadTask) {
// this method runs on main thread
// ... update completed status of a download task
}
func didReachIndividualProgress(progress:Float, task:JHDownloadTask) {
// this method runs on main thread
// ... update progress of a task
}
JHDownloadManagerDataDelegate
可用于下载完成后处理文件
// let downloadManager = JHDownloadManager.sharedInstance
// downloadManager.dataDelegate = self
// ...
func didFinishDownloadObject(task: JHDownloadTask) {
// this method runs on background thread
}
func didFinishAllForDataDelegate() {
// this method is run on background thread
// do whatever needs to be done after a batch has been downloaded successfully
}
在 didFinishDownloadObject
方法中,您将接收到一个 JHDownloadTask
实例。在这个实例中,您可以检索以下属性
let url:NSURL = task.url
let urlString:String = task.urlString
let destination:String = task.destination // destination is the full path to the downloaded file
let fileName:String = task.fileName
let checksum:String = task.checksum
let identifier:String = task.identifier
let downloadManager = JHDownloadManager.sharedInstance
downloadManager.addDownloadTask(["url": "http://download.thinkbroadband.com/5MB.zip", "destination": "test/5MB.zip"])
let downloadManager = JHDownloadManager.sharedInstance
let currentDownloadTask = downloadManager.downloadingTasks()
let downloadRateAndRemaining = JHDownloadManager.sharedInstance.downloadRateAndRemainingTime()
let downloadRate:String = downloadRateAndRemaining[0];
let remainingTime:String = downloadRateAndRemaining[1];
let isDownloading = JHDownloadManager.sharedInstance.isDownloading()
git clone [email protected]:jameshuynh/JHDownloadManager.git
JHDownloadManager/Example/JHDownloadManager.xcworkspace
Cmd + R
运行示例项目 :)欢迎贡献、建议和问题 :) 同时,请克隆项目并发起您的 pull request!
James Huynh,[email protected]
JHDownloadManager 以 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件。