You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI从AppCenter迁移至Firebase:Crashlytics替代TrackError及NuGet咨询

MAUI从AppCenter迁移至Firebase Crashlytics:替代Crashes.TrackError的实现

一、所需NuGet包说明

你提到的Xamarin.Firebase.Crashlytics和Xamarin.Firebase.Core是Android平台的正确依赖包;针对iOS平台,需要使用Xamarin.Firebase.iOS.Crashlytics和Xamarin.Firebase.iOS.Core。这些包可直接安装到MAUI项目中,支持跨平台调用。

二、对应TrackError的Firebase方法

Firebase Crashlytics中,手动记录非致命错误(对应AppCenter的Crashes.TrackError)的核心方法如下:

  • Android:FirebaseCrashlytics.Instance.RecordException(exception),搭配SetCustomKey添加自定义键值对
  • iOS:Crashlytics.SharedInstance.RecordException(exception),搭配SetValueForKey添加自定义信息

三、跨平台封装代码示例

为了和原AppCenter代码风格保持一致,可封装一个跨平台静态类:

using System;
using System.Collections.Generic;
#if ANDROID
using Firebase.Crashlytics;
#elif IOS
using Firebase.Crashlytics;
using Foundation;
#endif

public static class FirebaseCrashService
{
    public static void TrackError(Exception exception, Dictionary<string, string> customProperties = null)
    {
        // 注入自定义属性
        if (customProperties != null)
        {
            foreach (var prop in customProperties)
            {
#if ANDROID
                FirebaseCrashlytics.Instance.SetCustomKey(prop.Key, prop.Value);
#elif IOS
                Crashlytics.SharedInstance.SetValueForKey(new NSString(prop.Value), new NSString(prop.Key));
#endif
            }
        }

        // 记录异常
#if ANDROID
        FirebaseCrashlytics.Instance.RecordException(exception);
#elif IOS
        var nsError = new NSError(new NSString("CustomError"), 0, null);
        Crashlytics.SharedInstance.RecordException(exception, nsError);
#endif
    }
}

替换原AppCenter调用代码:

catch (Exception exception)
{
    FirebaseCrashService.TrackError(exception, 
        new Dictionary<string, string> 
        { 
            { "Method", "OnLoadAsync - Download" }, 
            { "Issue", "Loading Download List Page" } 
        });
}

四、平台初始化配置

  • Android:将Firebase控制台下载的google-services.json放入Platforms/Android目录,设置文件的生成操作为GoogleServicesJson;在启动代码中初始化Firebase:
    protected override void OnStart()
    {
        Firebase.FirebaseApp.InitializeApp(Android.App.Application.Context);
    }
    
  • iOS:将Firebase控制台下载的GoogleService-Info.plist放入Platforms/iOS目录,设置文件的生成操作为BundleResource;在启动代码中初始化Firebase:
    protected override void OnStart()
    {
        Firebase.Core.App.Configure();
    }
    

内容的提问来源于stack exchange,提问作者Jefferson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:02:41