web-dev-qa-db-fra.com

Xamarin.Android Default FirebaseApp n'est pas initialisé dans ce processus

Je fais face à un problème avec get token de firebase (notification push)

Default FirebaseApp is not initialized in this process com.ready_apps.Nebka.Business. Make sure to call FirebaseApp.initializeApp(Context) first.

même j'ai appelé FirebaseApp.InitializeApp (this); dans beaucoup d'endroits

MyApplication (qui étend Application), dans onCreate of Activity où j'appelle FirebaseInstanceId.Instance?.Token;

11
Mina Fawzy

Edit: Ce bogue a été corrigé dans la version 57.1104.0-beta1 de Xamarin.Firebase. 

Cette erreur semble être présente dans les versions les plus récentes de Firebase pour Xamarin. Je rencontre également cette erreur à compter d’aujourd’hui, avec la dernière version stable 42.1021.1. (L'erreur est également présente dans la dernière version bêta). 

J'ai trouvé qu'un rapport de bogue a été déposé pour le problème ici .

Comme indiqué dans le rapport de bogue, la suppression des dossiers/obj et/bin de votre projet Android et/ou le nettoyage du projet dans Visual Studio devrait résoudre le problème temporairement jusqu'à ce que vous mettiez à jour toute ressource susceptible de modifier le fichier Resource.Designer.cs. .

Il est également possible de passer à une ancienne version de Firebase et des services Google Play avant qu’une solution permanente ne soit disponible. Je n'ai pas rencontré cette erreur sur Firebase et la version 32.961.0 des services Google Play, par exemple. 

11
nekris

Il suffit de nettoyer la solution une fois et de relancer l'application.

Ce bogue est déjà signalé à Xamarin. https://bugzilla.xamarin.com/show_bug.cgi?id=56108

Cette solution est fournie dans leur fil de commentaire. Elle pourrait être corrigée dans la nouvelle version du package xamarin NuGet.

4
Rahul Sonone

Je n'ai pas résolu le problème, mais je trouve ce problème en mode débogage uniquement.

J'ai appelé cette méthode onCreate () dans activit j'ai besoin de demander le jeton 

FirebaseInstanceId.Instance?.Token

voici la méthode

private void ConfigureFireBase()
        {

#if DEBUG
            try
            {
            Task.Run(() =>
            {
                var instanceId = FirebaseInstanceId.Instance;
                instanceId?.DeleteInstanceId();
                //Log.Debug("TAG", "{0} {1}", instanceId?.Token?.ToString(), instanceId.GetToken(GetString(Resource.String.gcm_defaultSenderId), Firebase.Messaging.FirebaseMessaging.InstanceIdScope));

            });

             // For debug mode only - will accept the HTTPS certificate of Test/Dev server, as the HTTPS certificate is invalid /not trusted
            ServicePointManager.ServerCertificateValidationCallback += (o, certificate, chain, errors) => true;
            }catch (Exception e)
            {
                Log.Debug("TAG", e.Message);
            }
#endif
        }
0
Mina Fawzy