iOS扩展 - 致命异常:com.firebase.core已配置默认应用程序

时间:2016-07-22 22:45:16

标签: ios swift firebase ios-app-extension

iOS扩展 - 致命异常:com.firebase.core默认应用已经配置。

我在viewDidLoad()方法中运行Fir.configure(),一些事件传递到Firebase。

有人可以帮我解决这个问题吗...谷歌不够友好。

PS:是的我在Firebase控制台中创建了第二个.plist和第二个应用。 PPS:是的我为每个GoogleServices plist选择了正确的目标

我正在寻求解决方案..

6 个答案:

答案 0 :(得分:17)

我不知道您是否仍在寻找解决方案,但我遇到了同样的问题,使用扩展名为firebase。

我最终这样做了:

if(FIRApp.defaultApp() == nil){
    FIRApp.configure()
}

这将检查应用程序是否已配置,以确保没有崩溃。

答案 1 :(得分:5)

我有同样的问题,我通过在我的应用程序中的两个位置进行更改来解决它(检查swift版本的语法):

  1. 在AppDelegate.swift中覆盖以下方法:

    覆盖init()    {     FirebaseApp.configure()    }

  2. 在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
   }
}