PhDownloader (Petrus Hoc's Downloader)
简单、响应式且功能性的 iOS Swift 下载器,具有 RxSwift
和 RxAlamofire
的功能。
示例
要运行示例项目,首先克隆仓库,然后从示例目录中运行 pod install
。
需求
安装
PhDownloader 通过 CocoaPods 提供。要安装它,只需将以下行添加到你的 Podfile 中
pod 'PhDownloader'
作者
Phetrus Nguyễn Thái Học, [email protected]
管理用户
创建下载器
let downloader: PhDownloader = PhDownloaderFactory.makeDownloader(
with: .init(
maxConcurrent: 2,
throttleProgress: .milliseconds(500)
)
)
监视下载结果(用于显示snackbar、toast、alert等)
downloader
.downloadResult$
.subscribe(onNext: { result in
switch result {
case .success(let request):
...
case .failure(let request, let error):
...
case .cancelled(let request):
...
}
})
.disposed(by: disposeBag)
监视下载状态(用于更新UI)
downloader
.observe(by: ["id1", "id2", "id3"])
.subscribe(onNext: { tasks in
...
})
.disposed(by: disposeBag)
downloader
.observe(by: "Request id")
.subscribe(onNext: { task in
...
})
.disposed(by: disposeBag)
入队、取消、取消所有、移除
let id = "Request id"
downloader
.enqueue(
.init(
identifier: id,
url: URL(string: "https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4")!,
fileName: "test_file_\(id).mp4",
savedDir: FileManager.default
.urls(for: .documentDirectory, in: .userDomainMask)
.first!
.appendingPathComponent("downloads", isDirectory: true)
)
)
.subscribe()
.disposed(by: disposeBag)
downloader
.cancel(by: id)
.subscribe()
.disposed(by: disposeBag)
downloader
.cancelAll()
.subscribe()
.disposed(by: disposeBag)
downloader
.remove(identifier: id)
.subscribe()
.disposed(by: disposeBag)
许可证
PhDownloader遵从MIT许可证,更多信息请见LICENSE文件。