2016-07-22 16 views
3

iOS-Erweiterung - Schwerwiegende Ausnahme: com.firebase.core Standard-App wurde bereits konfiguriert.iOS-Erweiterung - Schwerwiegende Ausnahme: com.firebase.core Standard-App wurde bereits konfiguriert

Ich führe die Fir.configure() in der ViewDidLoad() -Methode und einige Ereignisse passieren und erreichen Firebase.

Kann mir jemand helfen, dies herauszufinden .. Google ist nicht freundlich genug.

PS: Ja, ich habe eine zweite .plist und eine zweite App in Firebase Console erstellt. PPS: Ja habe ich das richtige Ziel für jede GoogleServices

plist

ich die Lösung bin auf der Suche ..

Antwort

1

Die Antwort der Ausnahme. Sie konfigurieren die App zweimal. Sie haben ein paar Optionen, um dies zu beheben:

1) Konfigurieren Sie Ihre App einmal in Ihrer App Delegate.

2) Ordnen Sie eine Konfiguration mit einer Dekonfiguration zu. Es gibt eine Methode auf FIRApp, die es ermöglicht, sie zu dekonfigurieren (der eigentliche Name entkommt mir).

+0

Hmm .. Ich landete mit Google Analytics, denn wenn Sie nicht Firebase konfigurieren, Sie Absturz zu bekommen, und wenn Sie konfigurieren teice Sie Absturz bekommen. Firebase scheint Erweiterungen nicht zu unterstützen. Auch wenn Sie die Dekonfiguration deaktivieren können, müssen Sie Firebase in der Haupt-App und in den Erweiterungen dekonfigurieren. Das soll nicht wirklich passieren oder behandelt werden. Firebase ist unzuverlässig. Google Analytics ist die bessere Wahl. PS: Ich habe versucht, manuell mit Daten von Plist konfigurieren und es würde immer noch nicht funktionieren in Erweiterungen.Wenn Sie einen Build für die Veröffentlichung machen, stürzt er jedes Mal ab, während es im Debugging 50/50 ist. – Stefan

+0

Ah, Sie haben versucht, den Vornamen in Ihrer App und Ihren Erweiterungen zu verwenden? Sie können dies möglicherweise erreichen, indem Sie für jede einzelne benutzerdefinierte FIRApps registrieren, anstatt die Standardanwendung zu verwenden. – Mark

+0

Also habe ich zuerst 2 apps in der Konsole konfiguriert -> 2 plists. Ich habe versucht, beide zu konfigurieren ... Crash .. Versucht nur Main .. Crash. Versucht, einen benutzerdefinierten Namen für die Erweiterung zu vergeben. Der Firebase wurde nicht geladen. Versucht, alle Daten in FirOptions einzugeben. Arbeitet nicht in Erweiterung. Ich fügte dann Google Analytics hinzu und entfernte Firebase Analytics – Stefan

15

Ich weiß nicht, ob Sie immer noch nach einer Lösung suchen, aber ich hatte das gleiche Problem, mit Firebase mit der Erweiterung.

landete ich dies zu tun:

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

Dies wird überprüfen, ob die App bereits so konfiguriert ist, dass es keinen Absturz.

+0

Das Problem ist meine Haupt-App und meine kb sind zwei verschiedene Anwendungen in Firebase, und haben 2 verschiedene plists. So wäre diese Methode nicht von großem Nutzen, da beide als Standard-App, aber unter verschiedenen Namen konfiguriert werden würden. Diese Lösung mag funktionieren, aber ich entschied mich, bei GA für Echtzeitanalysen und Grafiken zu bleiben. Firebase ist noch nicht fertig. Danke für deine späte Antwort. PS: auch wenn diese Lösung funktioniert. Ich würde immer noch andere Daten von der kb und der App benötigen. Wenn also einer konfiguriert wurde und der andere nicht ... würde das meinem Fall nicht helfen. – Stefan

+0

Das ist schön. Benutzte es in einem Erweiterungskontext. –

0

Ich habe auch dieses Problem in einem heutigen Erweiterungscode auch. Ich gelöst, wenn sie mit einer extra überprüfen, ob Ihre Firebase-Instanz bereits konfiguriert ist:

// 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]; 
} 

In Ihrem Haupt-App können Sie auch einen anderen eindeutigen Namen für sie verwenden sollten. Sie können also mehrere Instanzen haben, aber jede Instanz wird nur einmal konfiguriert.

0

Ich hatte das gleiche Problem, und ich beschlossen, es durch (überprüfen Sie Ihre Syntax für die schnelle Version) Änderungen an zwei Stellen in meiner Anwendung zu machen:

  1. In AppDelegate.swift eine folgende Methode überschreiben:

    Überschreibung init() { FirebaseApp.configure() }

  2. In Ihrem ViewController.swift der viewDidLoad() -Methode, schreiben Sie diesen Code:

    if FirebaseApp.app() == nil { 
        FirebaseApp.configure() 
    } 
    
Verwandte Themen