iOS扩展 - 致命异常:com.firebase.core默认应用已经配置。
我在viewDidLoad()方法中运行Fir.configure(),一些事件传递到Firebase。
有人可以帮我解决这个问题吗...谷歌不够友好。
PS:是的我在Firebase控制台中创建了第二个.plist和第二个应用。 PPS:是的我为每个GoogleServices plist选择了正确的目标
我正在寻求解决方案..
答案 0 :(得分:17)
我不知道您是否仍在寻找解决方案,但我遇到了同样的问题,使用扩展名为firebase。
我最终这样做了:
if(FIRApp.defaultApp() == nil){
FIRApp.configure()
}
这将检查应用程序是否已配置,以确保没有崩溃。
答案 1 :(得分:5)
我有同样的问题,我通过在我的应用程序中的两个位置进行更改来解决它(检查swift版本的语法):
在AppDelegate.swift中覆盖以下方法:
覆盖init() { FirebaseApp.configure() }
在ViewController.swift的viewDidLoad()方法中,编写以下代码:
if FirebaseApp.app() == nil {
FirebaseApp.configure()
}
答案 2 :(得分:4)
使用它代替最新的firebase_ml_vision:^ 0.9.3 + 8
if(FirebaseApp.app() == nil){
FirebaseApp.configure()
}
答案 3 :(得分:1)
答案是例外。您已经两次配置应用。你有几个方法可以解决这个问题:
1)在您的应用代表中配置您的应用一次。
2)将配置与取消配置匹配。 FIRApp上有一个允许你取消配置的方法(实际名称让我逃避)。
答案 4 :(得分:0)
我也在今天的扩展代码中遇到了这个问题。如果额外检查您的Firebase实例是否已配置,我就解决了:
// define in your constants or somewhere
NSString* const UNIQUE_FIREBASE_INSTANCE_IDENTIFIER_WIDGET = @"Widget_FirebaseAppInstance";
if([FIRApp appNamed:UNIQUE_FIREBASE_INSTANCE_IDENTIFIER_WIDGET] == nil) // there should be only one app instance!
{
NSString *resourceName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"FirebaseResource"];
NSString *filePath = [[NSBundle mainBundle] pathForResource:resourceName ofType:@"plist"];
FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath];
[FIRApp configureWithName:UNIQUE_FIREBASE_INSTANCE_IDENTIFIER_WIDGET options:options];
}
在您的主应用程序中,您还应该使用不同的唯一名称。因此,您可以拥有多个实例,但每个实例只配置一次。
答案 5 :(得分:0)
If you write, FirebaseApp.configure()
two times, then you'll get exception com.firebase.core Default app has already been configured
.
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
FirebaseApp.configure() // 1
GMSServices.provideAPIKey(R.ApiKeys.googleApiKey)
IQKeyboardManager.shared.enable = true
IQKeyboardManager.shared.enableAutoToolbar = true
FirebaseApp.configure() // 2
return true
}
}