it-swarm.com.de

So überprüfen Sie, ob eine Firebase-App bereits unter Android initialisiert wurde

Beim folgenden Aufruf funktioniert es zum ersten Mal, schlägt jedoch bei nachfolgenden Aufrufen mit "FirebaseApp-Name [DEFAULT] ist bereits vorhanden!"

public FirebaseDatabase conn(Context c) {
         FirebaseOptions options = new FirebaseOptions.Builder()
                .setApiKey("key")
                .setDatabaseUrl("url")
                .setApplicationId("ID")
                .build();


        /////I tried Try and Catch with no success//////
        FirebaseApp app = FirebaseApp.initializeApp(c, options);

        /// for this : FirebaseApp app = FirebaseApp.initializeApp(c, options, "some_app");
        //// will fail with "FirebaseApp name some_app already exists!"
        return FirebaseDatabase.getInstance(app);
}

Alle oben genannten Schritte sind der Versuch, eine Verbindung zu einer zweiten Firebase-App herzustellen. 

21
Relm

In firebase web prüfen Sie, ob bereits initialisiert wurde mit:

if (!firebase.apps.length) {
    firebase.initializeApp({});
}
53
Daniel Laurindo

Ich denke, Sie möchten die Liste der laufenden Apps überprüfen, bevor Sie Ihre App initialisieren. Für jedes SDKs gibt es eine Methode zum Abrufen dieses Arrays. In Android ist es getApps:

https://firebase.google.com/docs/reference/Android/com/google/firebase/FirebaseApp.html

Dann können Sie überprüfen, ob Ihre App bereits initialisiert ist.

In meinem Fall habe ich gerade die Länge des Arrays überprüft (ich verwende Javascript/Web-SDK, also bin ich sicher, dass es für Android ein bisschen anders ist) und initialisiert eine neue App, wenn sie 0 ist.

3
KCE

Für diejenigen, die sich fragen, wie sie die akzeptierte Antwort auf Android tun sollen:

if (FirebaseApp.getApps(context).isEmpty()) {
    FirebaseApp.initializeApp(context);
}

und verwenden Sie in einer instrumentierten Testumgebung diesen Kontext:

InstrumentationRegistry.getContext()
2
Nick Cardoso

Ich hatte ein ähnliches Problem. Ich löste das folgende Problem, indem ich die bereits initialisierte App löschte.

    // Access your firebase app
    let app = firebase.app();
    // Delete your app.
    app.delete(app);

Lösung funktioniert für das Web.

1
Manoj Pathak

Sie können versuchen, die Firebase-App-Instanz abzurufen. In ihrem Code überprüft Firebase, ob sie initialisiert ist. Andernfalls wird eine IllegalStateException ausgegeben.

    try{
        FirebaseApp.getInstance();
    }
    catch (IllegalStateException e)
    {
        //Firebase not initialized automatically, do it manually
        FirebaseApp.initializeApp(this);
    }
1
Jorge Arimany

Ich war mit dem ähnlichen Problem konfrontiert und habe es wie folgt gelöst:

  1. Erstellen Sie eine var für die Anwendung und initialisieren Sie sie mit null
  2. Nehmen Sie während der Initialisierung Bezug auf die Anwendung
  3. Überprüfen Sie, bevor Sie es erneut initialisieren

//global variable
var firebaseResumeDownloadAdd = null;

//inside function check before initializing
if(firebaseResumeDownloadAdd==null){
   firebaseResumeDownloadAdd =
   firebase.initializeApp(functions.config().firebase);
}
1

Sie können die App wie folgt löschen

if(!FirebaseApp.getApps().isEmpty()) {
        FirebaseApp.getInstance().delete();
}
0
Sajeer Babu