我的Xamarin.Android应用程序在模拟器中运行得很好,但最近当用户在实际的Android设备上运行时,它刚刚开始崩溃。此错误显示在应用程序中心:中
FirebaseInstanceId.get_Instance((Java.Lang.IollegalStateException:在此进程"NameOfApp"中未初始化默认的FirebaseApp。请确保首先调用FirebaseApp.initializeApp(Context(。
一些用户建议在MainActivty.cs文件中添加以下代码片段来编辑我的OnCreate方法:
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}");
}
}
}
}
根据AppCenter的官方文档,https://learn.microsoft.com/en-us/xamarin/android/data-cloud/google-messaging/remote-notifications-with-fcm
这是一个已知的问题,这就是他们所建议的
"这是一个已知的问题,您可以通过清理解决方案和重建项目来解决(构建>清理解决方案,构建>重建解决方案(。">
我不建议添加您提到的代码。它不能保证你的应用程序正常工作。
感谢大家的帮助,像下面这样手动配置Firebase解决了我的问题。
var options = new FirebaseOptions.Builder()
.SetApplicationId("<AppID>")
.SetApiKey("<ApiKey>")
.SetDatabaseUrl("<DBURl>")
.SetStorageBucket("<StorageBucket>")
.SetGcmSenderId("<SenderID>").Build();
var fapp = FirebaseApp.InitializeApp(this, options);