【发布时间】:2016-11-02 21:13:01
【问题描述】:
Firebase Storage 在其 iOS 文档中声称 here
无论网络质量如何,都会执行上传和下载。上传和下载非常强大,这意味着它们会在停止的地方重新启动
所以人们会期望它在上传时处理丢失的连接,但它似乎没有。
使用 iOS 中的以下 Swift 代码,我可以在有连接时很好地执行上传,但如果设备没有连接或者它曾经与网络断开连接,则会出现故障条件。
let storage = FIRStorage.storage().referenceForURL("VALID_URL_REMOVED")
let imagesRef = storage.child("images/test.jpg")
let data = UIImageJPEGRepresentation(observationImage!, 0.7);
let uploadTask = imagesRef.putData(data!, metadata: nil)
uploadTask.observeStatus(.Progress) { snapshot in
// Upload reported progress
if let progress = snapshot.progress {
let percentComplete = 100.0 * Double(progress.completedUnitCount) / Double(progress.totalUnitCount)
print("percent \(percentComplete)")
}
}
uploadTask.observeStatus(.Success) { snapshot in
// Upload completed successfully
print("success")
}
uploadTask.observeStatus(.Failure) { snapshot in
print("error")
print(snapshot.error?.localizedDescription)
}
这段代码的调试输出如下。
/*
percent 0.0
percent 0.0044084949781492
2016-06-30 11:49:16.480 Removed[5020:] <FIRAnalytics/DEBUG> Network status has changed. Code, status: 1, Disconnected
percent 0.0044084949781492
error
Optional("An unknown error occurred, please check the server response.")
*/
Firebase 的实时数据库离线存储也是用下面的代码设置的,但我不确定这是否相关。
FIRDatabase.database().persistenceEnabled = true
我还尝试使用以下几行手动设置超时,如this 问题的答案中所述,没有任何更改。
let config = FIRStorage()
config.maxUploadRetryTime = 1000000
有没有办法让它在不从头开始实现功能的情况下处理这些断开连接?我错过了什么吗?
【问题讨论】:
标签: ios swift firebase-storage