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()
以启用匿名登录