.Net Maui 自定义服务的依赖注入问题

问题描述 投票:0回答:1

我正在尝试使用以下示例在我的 .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;
    }
}
firebase dependency-injection maui crashlytics
1个回答
0
投票

但是,我在了解如何访问已注册的 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>();
}
© www.soinside.com 2019 - 2024. All rights reserved.