使用 Alamofire 的下载速率
download rate using Alamofire
我正在使用此功能编写带有 alamofire 模块的下载器应用程序我想在 MB/s 中显示当前下载率,但我真的不知道如何实现,请帮助我。
@IBAction func tapStartButton(_ sender: Any) {
let fileUrl = self.getSaveFileUrl(fileName: Data[0] as String)
let destination: DownloadRequest.DownloadFileDestination = { _, _ in
return (fileUrl, [.removePreviousFile, .createIntermediateDirectories])
}
self.request = Alamofire.download(Data[0] as String , to:destination)
.downloadProgress { (progress) in
self.progressCircle.progress = progress.fractionCompleted
cell.progressLabel.isHidden = false
}
.responseData { (data) in
self.Data.removeFirst()
self.startButton.isHidden = false
self.pauseButton.isHidden = true
}
我认为 Alamofire 或任何其他库都不能提供下载速度。开发人员必须自己计算。
你可以这样做:
- 取一个保存之前下载字节的全局变量。
- 使用
NSTimer
间隔1秒计算速度。
代码示例:
var prevDownloadedBytes: Int = 0
var totalDownloadedBytes: Int = 0
func calculateDownloadSpeed(){
Timer.scheduleWith(timeInterval: 1.0, repeats: true){
speed = totalDownloadedBytes - prevDownloadedBytes
print("Speed is: \(speed) bps")
prevDownloadedBytes = totalDownloadedBytes
}
}
@IBAction func tapStartButton(_ sender: Any) {
self.request = Alamofire.download(Data[0] as String , to:destination)
.downloadProgress { (progress) in
//Set Total Downloaded bytes here
self.totalDownloadedBytes = progress.fileCompletedCount
self.progressCircle.progress = progress.fractionCompleted
cell.progressLabel.isHidden = false
}
.responseData { (data) in
self.Data.removeFirst()
self.startButton.isHidden = false
self.pauseButton.isHidden = true
}
我正在使用此功能编写带有 alamofire 模块的下载器应用程序我想在 MB/s 中显示当前下载率,但我真的不知道如何实现,请帮助我。
@IBAction func tapStartButton(_ sender: Any) {
let fileUrl = self.getSaveFileUrl(fileName: Data[0] as String)
let destination: DownloadRequest.DownloadFileDestination = { _, _ in
return (fileUrl, [.removePreviousFile, .createIntermediateDirectories])
}
self.request = Alamofire.download(Data[0] as String , to:destination)
.downloadProgress { (progress) in
self.progressCircle.progress = progress.fractionCompleted
cell.progressLabel.isHidden = false
}
.responseData { (data) in
self.Data.removeFirst()
self.startButton.isHidden = false
self.pauseButton.isHidden = true
}
我认为 Alamofire 或任何其他库都不能提供下载速度。开发人员必须自己计算。 你可以这样做:
- 取一个保存之前下载字节的全局变量。
- 使用
NSTimer
间隔1秒计算速度。
代码示例:
var prevDownloadedBytes: Int = 0
var totalDownloadedBytes: Int = 0
func calculateDownloadSpeed(){
Timer.scheduleWith(timeInterval: 1.0, repeats: true){
speed = totalDownloadedBytes - prevDownloadedBytes
print("Speed is: \(speed) bps")
prevDownloadedBytes = totalDownloadedBytes
}
}
@IBAction func tapStartButton(_ sender: Any) {
self.request = Alamofire.download(Data[0] as String , to:destination)
.downloadProgress { (progress) in
//Set Total Downloaded bytes here
self.totalDownloadedBytes = progress.fileCompletedCount
self.progressCircle.progress = progress.fractionCompleted
cell.progressLabel.isHidden = false
}
.responseData { (data) in
self.Data.removeFirst()
self.startButton.isHidden = false
self.pauseButton.isHidden = true
}