web-dev-qa-db-fra.com

Comment vérifier si une application Firebase est déjà initialisée sur Android

Avec ce qui suit, la première fois qu'il s'appelle, cela fonctionne, mais échoue lors d'appels suivants avec "Le nom FirebaseApp [DEFAULT] existe déjà!"

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);
}

Tout ce qui précède est une tentative de connexion à une deuxième application Firebase. 

21
Relm

Sur firebase web, vous vérifiez s’il est déjà initialisé avec:

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

Je pense que ce que vous voulez faire est de vérifier la liste des applications en cours d'exécution avant d'initialiser votre application. Chacun des SDK possède une méthode pour obtenir ce tableau. Dans Android, il s'agit de getApps:

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

Ensuite, vous pouvez vérifier si votre application est déjà initialisée.

Dans mon cas, je me suis contenté de vérifier la longueur du tableau (j'utilise le Javascript/web sdk donc je suis sûr que c'est un peu différent pour Android) et d'initialiser une nouvelle application si elle vaut 0.

3
KCE

Pour ceux qui se demandent comment faire la même chose que la réponse acceptée, sous Android:

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

et dans un environnement de test instrumenté, utilisez ce contexte:

InstrumentationRegistry.getContext()
2
Nick Cardoso

J'ai fait face au même problème .. J'ai résolu le problème suivant en supprimant l'application déjà initialisée.

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

La solution fonctionne pour le Web.

1
Manoj Pathak

Vous pouvez essayer d’obtenir l’instance de l’application Firebase, dans son code, vérifie si elle est initialisée, sinon jette une IllegalStateException.

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

J'ai fait face au problème similaire, je l'ai résolu comme suit:

  1. Créer une var pour l'application et l'initialiser avec null
  2. Prendre la référence de l'application lors de l'initialisation
  3. Vérifiez avant de l'initialiser à nouveau

//global variable
var firebaseResumeDownloadAdd = null;

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