未调用 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

如何清除 Firebase 存储?

Firebase 存储上传图像不适用于亚马逊火灾(型号:Fire 7)

未调用 Flutter Firebase 消息传递 iOS 处理程序