.NET Maui中iOS/Android获取FCM Token及替代NuGet包咨询
替代Plugin.Firebase的.NET MAUI FCM Token获取方案
方案一:使用Google官方Firebase MAUI绑定包
这是最稳定的官方适配方案,可规避第三方包的冲突问题:
- 移除项目中所有旧的Xamarin Firebase相关包,清理NuGet缓存(执行命令:
dotnet nuget locals all --clear) - 安装适配MAUI的Firebase NuGet包:
- 核心包:
Google.Firebase.Core - 消息推送包:
Google.Firebase.Messaging
- 核心包:
- 平台配置:
- Android:将
google-services.json放入Platforms/Android目录,设置其生成操作为GoogleServicesJson - iOS:将
GoogleService-Info.plist放入Platforms/iOS目录,设置生成操作为BundleResource
- Android:将
- 获取Token的代码:
- Android:继承
FirebaseMessagingService,重写OnNewToken方法直接获取Token - iOS:在
AppDelegate的FinishedLaunching方法初始化Firebase后,通过Messaging.SharedInstance.FcmToken获取Token,同时监听Messaging.SharedInstance.NotificationTokenRefresh事件处理Token更新
- Android:继承
方案二:原生平台直接调用FCM(无第三方包依赖)
如果仅需获取Token,可跳过第三方包,直接通过原生代码实现:
- Android:
- 在
AndroidManifest.xml中添加FCM服务声明 - 创建自定义
FirebaseMessagingService子类,重写OnNewToken方法拿到Token后,通过MAUI的MainThread传递到共享代码层
- 在
- iOS:
- 在
AppDelegate中请求推送权限并初始化Firebase - 通过
Messaging.SharedInstance.FcmToken获取当前Token,监听NotificationTokenRefresh事件处理Token更新
- 在
注意事项
- 彻底清理项目中残留的Xamarin Firebase包,这类包与.NET 7 MAUI环境存在兼容性冲突,是引发MSB3030错误的核心原因
- 测试前执行清理并重新生成操作,避免缓存文件导致的异常
内容的提问来源于stack exchange,提问作者Dennis
相关产品推荐
相关产品推荐

