我的Xamarin.Android应用程序在模拟器中运行得很好,但最近当用户在实际的Android设备上运行它时,却开始崩溃。
FirebaseInstanceId.get_Instance () Java.Lang.IllegalStateException: 默认的FirebaseApp没有在这个过程中初始化 "NameOfApp"。一定要先调用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的官方文档,我的Xamarin.Android App运行得很好,但最近当用户在实际的Android设备上运行时,就开始崩溃。https:/docs.microsoft.comen-usxamarinandroiddata-cloudgoogle-messagingremote-notifications-with-fcm。
这是一个已知的问题,这是他们的建议。
"这是一个已知的问题,你可以通过清理解决方案和重建项目(Build > Clean Solution,Build > Rebuild Solution)来解决。"
我不建议添加你提到的那段代码。它不能保证你的应用能正常运行。
谢谢你们的帮助,像下面这样手动配置Firebase解决了我的问题。
var options = new FirebaseOptions.Builder()
.SetApplicationId("<AppID>")
.SetApiKey("<ApiKey>")
.SetDatabaseUrl("<DBURl>")
.SetStorageBucket("<StorageBucket>")
.SetGcmSenderId("<SenderID>").Build();
var fapp = FirebaseApp.InitializeApp(this, options);