MAUI怎么集成Firebase MAUI Firebase配置方法

来源:这里教程网 时间:2026-02-21 17:34:21 作者:

MAUI 本身不原生支持 Firebase,因为它不是 Xamarin.Forms 那种通过插件生态深度适配的框架。但你可以通过平台特定项目(Android/iOS)分别接入 Firebase FCM(Android)和 APNs(iOS),再用 MAUI 的依赖服务或消息中心统一桥接通知逻辑。关键不是“MAUI 直接集成 Firebase”,而是“在 MAUI 项目中按平台接入 Firebase 并统一处理”。

Android 端配置 FCM

这是最直接的一环,因为 Firebase 官方提供 Android SDK,且与 MAUI 的 Android 项目完全兼容:

Platforms/Android 项目中,打开
AndroidManifest.xml
,添加必要权限和服务声明:
android:name="android.permission.INTERNET" />


  android:name=".FirebasePushService"
  android:exported="false">
  
    google.firebase.MESSAGING_EVENT" />
  

新建
FirebasePushService.cs
继承
FirebaseMessagingService
,重写
OnMessageReceived
OnNewToken
;在
OnNewToken
中获取 token 并通过 MAUI 的
MainThread.InvokeOnMainThreadAsync
通知共享层
确保
google-services.json
已复制到 Platforms/Android 根目录,并在
csproj
中设为
GoogleServicesJson
类型:

  

iOS 端配置 APNs(替代 Firebase 的推送通道)

iOS 不允许 Firebase SDK 直接处理通知(尤其后台静默推送受限),所以必须走原生 APNs 流程,Firebase 只能作为服务器端中转:

Platforms/iOS 中启用 Push Notifications 能力(Xcode → Signing & Capabilities → + Capability → Push Notifications)
AppDelegate.cs
Program.cs
初始化时请求通知授权,并注册 device token:
varauthOptions = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Sound | UNAuthorizationOptions.Badge;
UNUserNotificationCenter.Current.RequestAuthorization(authOptions, (granted, error) => {
  if (granted)
    UIApplication.SharedApplication.RegisterForRemoteNotifications();
});
实现
RegisteredForRemoteNotifications
回调,将
deviceToken
转为字符串并传给 MAUI 共享层(例如通过
IPlatformNotifyService
接口)
注意:iOS 上 Firebase 控制台无法直接向 MAUI App 发送通知,需你自己的后端用 APNs 密钥(.p8)或 Token-Based Authentication 向 Apple 推送网关发请求

MAUI 共享层统一收口

定义一个跨平台接口,让各平台实现自己的 token 上报与通知接收逻辑:

创建
INotificationService.cs
public interface INotificationService
{
  Task InitializeAsync();
  Task GetTokenAsync();
  event EventHandler NotificationReceived;
}
MauiProgram.cs
中注册:
builder.Services.AddSingleton(); Android/iOS 分别实现该接口,内部调用各自原生 token 获取与监听逻辑 在页面中注入并监听:
notificationService.NotificationReceived += OnPushReceived;

注意事项与避坑点

Firebase 控制台测试推送仅对标准 Android App 有效;MAUI 项目需确保包名、SHA-1 证书指纹、google-services.json 三者严格匹配 iOS 模拟器不支持 APNs,真机调试是必须的;Ad Hoc 或 App Store 分发时需用 Production APNs 证书 MAUI 1.0+ 支持
AppHostBuilder
生命周期,建议在
OnResume
OnForeground
中重新绑定通知监听,避免冷启动丢失事件
不要试图在共享层直接引用
Firebase.Messaging
NuGet 包——它不兼容 MAUI,只适用于传统 Xamarin.Android 项目

基本上就这些。核心思路是“平台归平台,逻辑归共享”,不强求 Firebase 全链路 MAUI 化,而是务实拆解、分段对接。

相关推荐