未能获取默认 Firebase 数据库实例。必须调用`[FIRApp 配置]

Posted

技术标签:

【中文标题】未能获取默认 Firebase 数据库实例。必须调用`[FIRApp 配置]【英文标题】:Failed to get default Firebase Database instance. Must call `[FIRApp configure] 【发布时间】:2017-09-04 21:00:34 【问题描述】:

当我尝试向 Firebase 验证用户时,没问题,但是当我尝试写入数据库用户的电子邮件地址时,出现错误。

我的代码:

import UIKit
import Firebase

class ViewController: UIViewController 

    @IBOutlet weak var emailField: UITextField!
    @IBOutlet weak var sifreField: UITextField!
    @IBOutlet weak var sifre1Field: UITextField!

    var ref = Database.database().reference()

    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

    @IBAction func kayitBtn(_ sender: Any)
    
        if(sifreField.text != sifre1Field.text)
        
            print("****error****")
        
        else if ( !(emailField.text?.isEmpty)! || !(sifreField.text?.isEmpty)! || !(sifre1Field.text?.isEmpty)! )
        
            Auth.auth().createUser(withEmail: emailField.text!, password: sifreField.text!)  (user, error) in
                if error != nil
                
                    print ("***error***")
                
                else if ( !(self.emailField.text?.isEmpty)! || !(self.sifreField.text?.isEmpty)!  || !(self.sifre1Field.text?.isEmpty)! )
                
                    self.ref.child("users").child((user?.uid)!).setValue(["email": self.emailField.text!])
                    print("database ok")
                
        
        
    


我的 AppDelegate.swift(在 didFinishLaunchingWithOptions 中添加了 import Firebase 和 FirebaseApp.configure()):

import UIKit
import CoreData
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate 

    var window: UIWindow?


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
        // Override point for customization after application launch.
        FirebaseApp.configure()
        return true
    

还有我的控制台错误:

我现在该怎么办?谢谢你的一切。

【问题讨论】:

在您的 didFinishLaunchingWithOptions 中来自您的应用委托调用 FIRapp.configure() @Lamar 是的,因为 firebase 想要我添加 import Firebase 并在 didFinishLaunchingWithOptions 中添加 FirebaseApp.configure() 代码 是的,如果我记得这个方法是从 firebase 加载包含您的数据库路径的 google plist。你这样做了吗,你发现另一个问题了吗? @Lamar 是的,您的意思是 GoogleService-Info.plist。我已经添加了,但我很困惑。我必须删除默认的 Info.plist 吗?不记得了:我希望我不会迟钝 检查您的GoogleService-Info.plist是否包含所有信息,主要是DATABASE_URL不应为空 【参考方案1】:
var ref: FIRDatabaseReference!

override func viewDidLoad() 
    super.viewDidLoad()
    ref = FIRDatabase.database().reference()

这将解决您的问题,并且应用不会崩溃。

【讨论】:

以上是关于未能获取默认 Firebase 数据库实例。必须调用`[FIRApp 配置]的主要内容,如果未能解决你的问题,请参考以下文章

APNS Firebase 通知未能获取令牌

Firebase 函数使用 GOOGLE_APPLICATION_CREDENTIALS 部署未能在全局范围内获取环境配置

未能将价值纳入日志消息? Kotlin - Firebase

Firebase - 应用分发无法获取应用信息:[403] 调用者没有权限 [重复]

必须先配置默认 FirebaseApp 实例,然后才能初始化 defaultFirebaseApp 实例

未能获取 FirebaseDatabase 实例。在 FirebaseApp 中指定 DatabaseURL