未调用 Firebase 存储完成处理程序
Posted
技术标签:
【中文标题】未调用 Firebase 存储完成处理程序【英文标题】:Firebase Storage Completion Handler not called 【发布时间】:2019-02-21 18:55:16 【问题描述】:我使用 Firebase 存储来存储图像。一切都按预期上传,图像出现在 Firebase 控制台上,但无论出于何种原因,完成处理程序都不会触发,因此进度 HUD 不会消失。我在第 6 行设置了一个断点,这样我就知道完成处理程序不会触发。有人可以向我解释为什么会发生这种情况吗?
guard let imageData = imageToUpload.jpegData(compressionQuality: 0.8) else return
let task = spaceRef.putData(imageData, metadata: nil, completion: (metadata, error) in
if let error = error
print("ERROR: \(error)")
self.dismissProgressHUD()
)
task.observe(.progress, handler: (snapshot) in
guard let progress = snapshot.progress else return
print(progress)
)
task.observe(.success, handler: (snapshot) in
print("succes")
self.dismissProgressHUD()
)
dismissProgressHUD() 是 UIViewController 扩展中的一个方法。
func dismissProgressHUD()
DispatchQueue.main.async
SVProgressHUD.dismiss()
控制台输出:
<NSProgress: 0x281d88140> : Parent: 0x0 / Fraction completed: 0.0000 / Completed: 0 of 2095130
<NSProgress: 0x281d88140> : Parent: 0x0 / Fraction completed: 0.0001 / Completed: 115 of 2095245
<NSProgress: 0x281d8b520> : Parent: 0x0 / Fraction completed: 0.0040 / Completed: 8307 of 2095245
<NSProgress: 0x281d8b480> : Parent: 0x0 / Fraction completed: 1.0000 / Completed: 2095245 of 2095245
2019-02-22 08:21:42.665537+0100 Binfinder[320:23087] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C11.1:2][0x1407a9660] get output frames failed, state 8196
2019-02-22 08:21:42.665806+0100 Binfinder[320:23087] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C11.1:2][0x1407a9660] get output frames failed, state 8196
2019-02-22 08:21:42.666331+0100 Binfinder[320:23087] TIC Read Status [11:0x0]: 1:57
2019-02-22 08:21:42.666368+0100 Binfinder[320:23087] TIC Read Status [11:0x0]: 1:57
【问题讨论】:
如果你实现 task.observe(.success) 它会被调用吗?此处的文档:firebase.google.com/docs/storage/ios/upload-files task.observe(.success) 也不会被调用。我已经用控制台输出更新了这篇文章。 【参考方案1】:我已将 CocoaPods 更新到最新版本,现在一切正常。
【讨论】:
以上是关于未调用 Firebase 存储完成处理程序的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 存储 downloadUrl 完成处理程序始终返回错误
未处理的承诺拒绝:this._next 不是函数:@angular/fire/messaging 中的区域
如果超时或无法访问服务器,Fire base 不会调用 onCancelled