从Firebase上传/下载数据时,我可以取得进展吗?

我需要在从Firebase数据库上传/下载数据时显示进度。 我能得到它吗?。 我在Firebase存储中看到过,但在Firebase数据库中没有看到。

基于数据的进展:

我build议查看这篇文章 ,因为它将帮助您了解如何使用一些内置的数据引用来确定您的上传进度。 虽然它不适用于iOS,但它解释了如何衡量上传进度的思考过程。

你总是可以使用这样的进度监视器:

 let observer = uploadTask.observeStatus(.Progress) { snapshot in print(snapshot.progress) // NSProgress object } 

基于计数的进展:

至于FrankvanPuffelen所说的,实际上没有工具可以给你所要求的东西。 然而,正如杰伊所说,你可以根据你的阅读/写作方式确定你的任务的“进度”。

比如说你正在写(上传)10张照片。 对于成功写入(上传)的每张照片,您只需将某种进度表增加1/10即可。

用户设备上某些本地文件的示例:

 // Some image on the device let localFile = URL(string: "<PATH>")! // Make a reference to the file that needs to be uploaded let riversRef = storageRef.child("chicken.jpg") // Upload the file to the path you specified let uploadTask = riversRef.putFile(from: localFile, metadata: nil) { metadata, error in if let error = error { // Whoops, something went wrong :( } else { // Tada! Uploaded file someCountVariable += 1 // If needed / applicable // let downloadURL = metadata!.downloadURL() } } 

当然,对于一(1)个项目,您将从0到100(..real快速 – 向Drake大喊),但是这可以嵌套在某个循环中,循环遍历一些要上传的项目列表。 然后每个项目成功上传增量。

如果您需要上传多个图像以外的对象,请求方面的代价会更高,但为此目的,这将为您提供一种很好的跟踪方式,用于跟踪至less有多less项目能够成功上传。

如果你真的想做到这一点,你总是可以尝试检查当前的连接强度,以确定一个相对的数据传输速度,并与当前正在尝试的任务相交叉。 这可能会给你至less一些估计进展的基础上多久,进程应该采取多久,实际上已经采取。

希望这有助于/指出你在正确的方向。 快乐的编码!