Firestore call setData在iOS上注销并登录firebase auth后将不会进入完成块

Firestore call setData在iOS上注销并登录firebase auth后将不会进入完成块,firebase,login,google-cloud-firestore,logout,completion,Firebase,Login,Google Cloud Firestore,Logout,Completion,在iOS(swift)中使用Firebase SDK 使用Firebase(4.10.0) 使用FirebaseAuth(4.4.4) 使用FirebaseCore(4.0.16) 使用FirebaseFirestore(0.10.2) 问题发生在 登录(匿名或使用凭据) 签到 签名 调用FIRDocumentReference.setData,则永远不会调用setData的完成块 如果 签到 终止应用程序 签名 调用FIRDocumentReference.setData一切正常 导入UIK

在iOS(swift)中使用Firebase SDK

使用Firebase(4.10.0)

使用FirebaseAuth(4.4.4)

使用FirebaseCore(4.0.16)

使用FirebaseFirestore(0.10.2)

问题发生在

  • 登录(匿名或使用凭据)
  • 签到
  • 签名
  • 调用FIRDocumentReference.setData,则永远不会调用setData的完成块
  • 如果

  • 签到
  • 终止应用程序
  • 签名
  • 调用FIRDocumentReference.setData一切正常
  • 导入UIKit
    进口火基
    类ViewController:UIViewController{
    让mEmail=”tester@xxxxx.com"
    让mPassword=“xxxxx”
    重写func viewDidLoad(){
    super.viewDidLoad()
    }
    @iAction func clickSignIn(\发送方:任意){
    打印(“单击登录”)
    Auth.Auth().sign(电子邮件:mEmail,密码:mPassword){(用户,错误)在
    打印(“用户:,用户??“无用户”)
    打印(“错误:,错误??“无错误”)
    }
    }
    @iAction func单击注销(\发送方:任意){
    打印(“单击签出”)
    做{
    请尝试Auth.Auth().signOut()
    }抓住{
    打印(“无法注销”)
    }
    打印(Auth.Auth().currentUser??“无用户”)
    }
    @iAction func clickSetData(\发送方:任意){
    打印(“单击设置数据”)
    let ref=Firestore.Firestore().文档(“测试/测试1”)
    让数据=[“文本”:“xxxxx”]
    ref.setData(数据,选项:SetOptions.merge()){(e)in
    如果(e==nil){
    打印(“设置数据完成”)
    }否则{
    打印(“设置数据错误:”,e??“无错误”)
    }
    }
    }
    
    }
    谷歌工程师确认,我发现的问题是最新iOS SDK版本(4.10.0)上的一个已知错误。好消息是,它已经在以下pull请求中修复:890893。在补丁公开发布之前,谷歌建议我们暂时降级到4.9.0版。目前无法共享任何细节或时间表,因此请密切关注我们的发行说明以获取任何更新。

    这些是Firestore中已知的漏洞,应在即将发布的版本中修复。请注意,Firebase 4.11.0版为我解决了这个问题。我正在使用cocoapods,所以这是我目前能达到的最高水平,尽管v4.12.0于3月20日发布。