Firebase 3x方法无法在真实设备中工作,但在模拟器Swift 3.0上工作

我们正在使用Google Firebase 3.x版本,我们遇到了来自Firebase的奇怪问题。 我们使用Swift 3.0并获取用户详细信息,我们使用以下代码段:

func getUserDetails(uid text:String!, userBlock:@escaping (_ details:AnyObject) -> Void) { //check DB Reference is nil or not. if self.rootDBRef == nil { self.rootDBRef = FIRDatabase.database().reference() } //check input text must not be empty if text.trim().characters.count == 0 { userBlock("" as AnyObject) return } let query = self.rootDBRef.child("users").queryOrdered(byChild: "uid").queryEqual(toValue: text) query.observeSingleEvent(of: .value, with: { (dbSnapshot) in guard let snap: FIRDataSnapshot? = dbSnapshot else { print("No Result Found") return } if snap?.value is NSNull { //block(found: false) userBlock("" as AnyObject) return } let dict = snap?.value as! [String : AnyObject] userBlock(dict as AnyObject) }) } 

该代码永远不会在真实设备中调用,我们没有得到任何错误日志,但相同的代码在模拟器中工作。 这是一个奇怪的问题,是的,我已经检查过类似的问题: Firebase无法在真实设备上运行(iOS)

我也试图禁用BitCode,但这根本不起作用。

我们正在使用带有Xcode 8的iOS 9设备。感谢任何帮助。

我认为问题出在身份validation上 。 您必须在Firebase启用身份validation ,但尚未对用户进行身份validation 。因此,您无权访问Firebase上的数据库。

您必须在FireBase中启用匿名登录

匿名登录

并根据FireBase文档

你必须在didFinishLaunchingWithOptions中添加FIRAuth.auth()?.signInAnonymously()以启用匿名登录