我们正在使用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 not worked on real devices (iOS)
我也尝试过禁用BitCode,但这根本不起作用。
我们正在使用带有Xcode 8的iOS 9设备。感谢任何帮助。
答案 0 :(得分:1)
我认为问题出在身份验证上。您必须在 Firebase 上启用身份验证,但尚未对用户进行身份验证。因此,您无权访问 Firebase上的数据库强>
答案 1 :(得分:0)
您必须在FireBase中启用匿名登录
您必须在 AppDelegate 的FIRAuth.auth()?.signInAnonymously()
中添加didFinishLaunchingWithOptions
才能启用匿名登录