OGeek|极客世界-中国程序员成长平台

标题: ios - 检索 Alamofire 估计剩余时间和文件下载大小 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 22:27
标题: ios - 检索 Alamofire 估计剩余时间和文件下载大小

我正在尝试使用 Alamofire 下载文件。为了显示进度,我正在使用来自 alamofire 的 downloadProgress。我从中得到了进度百分比。但我需要显示到目前为止下载的总 Mb/Kb 以及估计的剩余时间。这是我的代码:

AF.download("http://ipv4.download.thinkbroadband.com/200MB.zip",
                method: .get,
                parameters: nil,
                encoding: URLEncoding.default,
                headers: nil,
                interceptor:nil,
                to: destination)
                .downloadProgress { progress in
                    self.postProgress(progress: progress)
                }
                .responseData { response in
                    if let data = response.result.value {
//                        let image = UIImage(data: data)
                    }
            }

使用通知发布进度

func postProgress(progress: Progress) {
        NotificationCenter.default.post(name: .DownloadProgress, object: progress)
    }

使用以下代码显示我的进度

if let progress = notification.object as? Progress {
            progressBar.setProgress(Float(progress.fractionCompleted), animated: true)
            progressInNumberView.text = "\(Int64(progress.fractionCompleted*100))%"
            remianingView.text = "\(progress.fileCompletedCount) / \(progress.fileTotalCount)"
            if let estimatedTimeRemaining = progress.estimatedTimeRemaining {

                remianingView.text = format(estimatedTimeRemaining)
            }
        }

我得到了progress.fractionCompleted 完美。但progress.estimatedTimeRemaining、progress.fileCompletedCount 和progress.fileTotalCount 总是为零。



Best Answer-推荐答案


简单的 DownloadProgress 类实现,基于来自 Alamofire 或其他的 Progress 以及从此处获取的移动平均值 How to estimate download time remaining (accurately)?

https://gist.github.com/akovalov/7b22735e1fb7f1117bf04659e214d785

关于ios - 检索 Alamofire 估计剩余时间和文件下载大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55197497/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4