我正在尝试使用以下示例在我的 .Net MUI 8 应用程序中实现 Firebase Crashlytics:
https://dev.to/vhugogarcia/firebase-crashlytics-in-net-maui-57jp
但是,我在了解如何访问已注册的 FirebaseCrashlyticsService 时遇到问题。
以下崩溃并显示“系统空引用异常”:
var firebaseCrashlyticsService = Handler.MauiContext.Services.GetServices<IFirebaseCrashlyticsService>();
我的MauiProgram.cs如下:
using CommunityToolkit.Maui;
using MyApp.Services.Firebase;
using Microsoft.Maui.LifecycleEvents;
namespace MyApp;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMauiCommunityToolkit()
.UseMauiCommunityToolkitMediaElement()
.RegisterFirebase()
.RegisterAppServices();
return builder.Build();
}
private static MauiAppBuilder RegisterFirebase(this MauiAppBuilder builder)
{
builder.ConfigureLifecycleEvents(events =>
{
#if IOS
events.AddiOS(iOS => iOS.FinishedLaunching((app, launchOptions) => {
Firebase.Core.App.Configure();
Firebase.Crashlytics.Crashlytics.SharedInstance.Init();
Firebase.Crashlytics.Crashlytics.SharedInstance.SetCrashlyticsCollectionEnabled(true);
Firebase.Crashlytics.Crashlytics.SharedInstance.SendUnsentReports();
return false;
}));
#else
events.AddAndroid(android => android.OnCreate((activity, bundle) => {
Firebase.FirebaseApp.InitializeApp(activity);
}));
#endif
});
return builder;
}
public static MauiAppBuilder RegisterAppServices(this MauiAppBuilder builder)
{
builder.Services.AddSingleton<IFirebaseCrashlyticsService, FirebaseCrashlyticsService>();
return builder;
}
}
但是,我在了解如何访问已注册的 FirebaseCrashlyticsService 时遇到问题。
以下崩溃并显示“系统空引用异常”:
var firebaseCrashlyticsService = Handler.MauiContext.Services.GetServices<IFirebaseCrashlyticsService>();
您可以将其添加到
OnHandlerChanged
方法:
{
InitializeComponent();
//var firebaseCrashlyticsService = Handler.MauiContext.Services.GetServices<IFirebaseCrashlyticsService>();
}
protected override void OnHandlerChanged()
{
base.OnHandlerChanged();
var firebaseCrashlyticsService = Handler.MauiContext.Services.GetServices<IFirebaseCrashlyticsService>();
}