Mic*_*ams 28 ios firebase swift
我正在尝试将我的应用升级到新版本的Firebase.我浏览了设置指南并编辑了所有代码以匹配新语法.但是,当我运行应用程序时,我得到了这两个错误.
The default app has not been configured yet.
Terminating app due to uncaught exception 'MissingDatabaseURL', reason: 'Failed to get FIRDatabase instance: FIRApp object has no databaseURL in its FirebaseOptions object.'
Run Code Online (Sandbox Code Playgroud)
我已经 FIRApp.configure()在AppDelegate中将GoogleServices-Info.plist导入到我的项目中.plist也有所有正确的信息.其他任何人遇到这个或知道如何解决它?
uno*_*nom 70
以下是您的问题的答案:
要配置Firebase,您必须在某处执行FIRApp.configure().完成此操作后,您可以使用let firebaseDatabaseReference = FIRDatabase.database().reference()来获取对该数据库的引用并开始使用它.问题不在于Firebase"本身",而在于Swift的行为方式.
如果你放入FIRApp.configure()你的AppDelegate func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool然后在你声明的函数之外MyDatabase class使用,有时代码会在函数执行之前执行.let firebaseDatabaseReference = FIRDatabase.database().reference() FIRDatabase.database().reference()application didFinishLaunchingWithOptions
基本上,您的类正在尝试获取对Firebase数据库的引用,然后才有机会进行自我配置,在控制台中生成错误"尚未配置默认应用程序".
注意:这不会一直发生,有时应用程序启动很慢,例如在iOS模拟器中,并且在MyDatabase"let"执行并尝试获取引用之前没有机会完成.
这就是为什么移动FIRApp.configure()代码以覆盖AppDelegate中的init()的原因,实际上它确保在初始化AppDelegate时执行配置代码(在此情况下,在大多数情况下,在MyDatabase初始化之前)
override init() {
super.init()
FIRApp.configure()
// not really needed unless you really need it FIRDatabase.database().persistenceEnabled = true
}
Run Code Online (Sandbox Code Playgroud)
还要确保你super.init()(所以你超级类得到"消息"),所以你覆盖不是弊大于利.
alg*_*rid 29
我也在使用Fabric,在我的情况下,它是Fabric和Firebase初始化的顺序.我必须先进行初始化Firebase.
如此变化
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
Fabric.with([Crashlytics.self])
FirebaseApp.configure()
...
}
Run Code Online (Sandbox Code Playgroud)
至:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
Fabric.with([Crashlytics.self])
...
}
Run Code Online (Sandbox Code Playgroud)
解决了这个问题.
| 归档时间: |
|
| 查看次数: |
31127 次 |
| 最近记录: |