我爲我的應用使用了Firebase存儲。在我的應用中,用戶擁有個人資料,可以上傳個人資料照片,然後當他們將來點擊他們的個人資料時,它應該下載並顯示他們的個人資料照片。問題是,當我上傳和下載照片時,會出現明顯的延遲,並且代碼在應該執行時不運行。對於下載,我的電話號碼是ViewWillAppear()
,但即使在屏幕載入後我仍然繼續運行,並且我點擊了其他內容。我如何加快速度?延遲不僅令人討厭,而且當我移動到另一個視圖或註銷並且ViewWillAppear()
中的代碼仍在運行時,它會導致崩潰。iOS - Firebase存儲下載速度很慢
override func viewWillAppear(bool: Bool) {
var retPic : UIImage
let storage = FIRStorage.storage()
let storageRef = storage.referenceForURL("gs://project-xxxxxxxxxxx.appspot.com")
let profPicRef = storageRef.child("images/" + (FIRAuth.auth()?.currentUser?.uid)! + ".jpg")
// Download in memory with a maximum allowed size of 1MB (1 * 1024 * 1024 bytes)
profPicRef.dataWithMaxSize(1 * 4096 * 4096) { (data, error) -> Void in
if (error != nil) {
print(error)
} else {
// Data for "images/island.jpg" is returned
print("This is delayed")
self.retPic = UIImage(data: data!)!
self.imageView.image = self.retPic
print("still here")
self.imageView.reloadInputViews()
}
}
}
多大的文件?你下載了什麼類型的網絡?互聯網速度可能是您最大的放緩。特別是在移動設備上,這是相當有限的。 –
該文件不是太大,它只是一個普通的iPhone照片。當我切換屏幕時,是否有辦法至少強制該方法停止執行?或者以任何方式加快速度? – Alex
我檢查了一些我們的工程師。最好的選擇是你往返於GCS服務器(文件上傳到哪裏)的往返速度很慢。沒有辦法改變這一點。雖然我們也無法改變往返速度(或此事的帶寬),但我們正在研究如何針對這種情況進行優化。對於下載,您可以嘗試[從downloadURL下載](https://firebase.google.com/docs/storage/ios/download-files#generate_a_download_url)和下載庫(如SDWebImage),以查看是否可以解決問題。 –