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
相关产品推荐
相关产品推荐

