PhDownloader 0.7.0

PhDownloader 0.7.0

Petrus Nguyễn Thái Học 维护。



 
依赖于
Alamofire~> 5.6
RxAlamofire~> 6.1
RxSwift~> 6.5
RxRelay~> 6.5
Realm~> 10.32
RealmSwift~> 10.32
RxRealm~> 5.0
 

PhDownloader (Petrus Hoc's Downloader)

简单、响应式且功能性的 iOS Swift 下载器,具有 RxSwiftRxAlamofire 的功能。

iOS Build CI Version License Platform Hits

示例

要运行示例项目,首先克隆仓库,然后从示例目录中运行 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文件。