![](/img/trans.png)
[英]Swift - Problem While Downloading Data From Firebase Firestore Asynchronously with DispatchGroup()
[英]Can I get progress while uploading/downloading data from Firebase
我需要在從 Firebase 數據庫上傳/下載數據時顯示進度。 我能得到它嗎?。 我在 Firebase 存儲中看到,但在 Firebase 數據庫中沒有看到。
我建議您查看這篇文章,因為它將幫助您了解如何使用一些內置數據參考來確定您的上傳進度。 雖然它不適用於 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(.. 真的很快 - 向 Drake 大聲喊叫),但這可以嵌套在某個循環中,該循環遍歷要上傳的一些項目列表。 然后每個項目成功上傳增量。
如果您需要上傳多個圖像以外的對象,這將在請求方面更加昂貴,但為此目的,這將為您提供一種很好的視覺/數字方式來跟蹤至少還有多少項目可以成功上傳。
如果您真的想深入了解細節,您可以隨時嘗試檢查當前連接強度以確定相對數據傳輸速度,並將其與您正在嘗試的當前任務交叉。 這可能會根據流程應該花費的時間到實際花費的時間,至少為您提供一些估計的進度。
希望其中的一些幫助/為您指明正確的方向。 快樂編碼!
val bytesTransferred=taskSnapshot.bytesTransferred.toFloat()
val totalByteCount=taskSnapshot.totalByteCount.toFloat()
val progress = bytesTransferred / totalByteCount
Log.d("progress", (progress*100).toString())
Log.d("progressDivide", (bytesTransferred / totalByteCount).toString())
Log.d("progressbytesTransferred", bytesTransferred.toString())
Log.d("progresstotalByteCount", totalByteCount.toString())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.