Как решить ошибку центра приложений? - «FirebaseApp по умолчанию не инициализирован» для Xamarin. Android - PullRequest
0 голосов
/ 25 апреля 2020

Мой Xamarin. Android Приложение прекрасно работает в эмуляторе, но недавно оно только что заработало sh, когда пользователь запускает его на реальном Android устройстве. Эта ошибка отображается в Центре приложений:

FirebaseInstanceId.get_Instance () Java .Lang.IllegalStateException: FirebaseApp по умолчанию не инициализируется в этом процессе «NameOfApp». Обязательно сначала вызовите FirebaseApp.initializeApp (Context).

Некоторые пользователи предложили отредактировать мой метод OnCreate в моем файле MainActivty.cs, добавив следующий фрагмент кода:

Firebase.FirebaseApp.InitializeApp(this);

Я сделал это, но я не хочу выкатывать другое сломанное приложение. пожалуйста, дайте мне знать, если это правильный способ исправить эту ошибку или есть другие способы сделать это.

Спасибо за ваше время!

 protected override void OnCreate(Bundle savedInstanceState)
        {
        Firebase.FirebaseApp.InitializeApp(this);

        base.OnCreate(savedInstanceState);
        if (!Parameter.CheckInternet())
        {
            Intent intent = new Intent(Application.Context, typeof(NoInternetActivity));
            StartActivity(intent);
            return;
        }
        Helper.TrackEvent(Parameter.CategoryLoad, "home", "Main");

        if (Intent.Extras != null)
        {
            // If there is a Network error show message
            if (Intent.Extras.ContainsKey("NetworkError"))
            {
                Toast.MakeText(this, "Network Error, please try again", ToastLength.Short).Show();
            }
            else
            {
                // If there is a link from a notification launch the appropriate activity
                string linkType = Intent.GetStringExtra("LinkType");
                string linkPage = Intent.GetStringExtra("LinkPage");
                if (linkPage.Equals("main"))
                {
                    // Link is a main page
                    LaunchMainActivity(linkType);
                }
                else
                {
                    if (linkType.Equals("video"))
                    {
                        // Link is a Youtube video
                        Helper.LaunchVideo(this, linkPage);
                    }
                    else
                    {
                        // Link is a single page
                        LaunchSingleActivity(linkType, linkPage);
                    }
                }
                // Used this at some point to debug the extras but it's not necessary
                foreach (var key in Intent.Extras.KeySet())
                {
                    if (key != null)
                    {
                        var value = Intent.Extras.GetString(key);
                        Helper.TrackEvent("DEBUG", "extras", $"Key: {key} Value: {value}");
                    }
                }
            }
        }

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Спасибо, ребята, за вашу помощь, ручная настройка Firebase, как показано ниже, решила мою проблему.

var options = new FirebaseOptions.Builder()
.SetApplicationId("<AppID>")
.SetApiKey("<ApiKey>")
.SetDatabaseUrl("<DBURl>")
.SetStorageBucket("<StorageBucket>")
.SetGcmSenderId("<SenderID>").Build();
var fapp = FirebaseApp.InitializeApp(this, options);
0 голосов
/ 26 апреля 2020

Согласно официальным документам из AppCenter, https://docs.microsoft.com/en-us/xamarin/android/data-cloud/google-messaging/remote-notifications-with-fcm

Это известная проблема, и это то, что они предлагают

«Это известная проблема, которую вы можно обойтись путем очистки решения и перестройки проекта («Построить»> «Очистить решение», «Построить»> «Перестроить решение») ».

Я бы не советовал добавлять упомянутый вами код. Это не гарантирует, что ваше приложение будет работать нормально.

...