更新Xamarin Forms及Firebase组件后通知失效,提示Default FirebaseApp未初始化
解决Xamarin更新后Firebase初始化失败及通知失效问题
我之前也碰到过类似的版本更新后Firebase Messaging罢工的情况,结合你的报错和操作记录,给你几个针对性的排查和修复步骤:
1. 手动强制初始化FirebaseApp
新版本的Xamarin.Firebase.Messaging可能改变了自动初始化的逻辑,依赖自动初始化容易出问题。建议在Android项目的MainActivity的OnCreate方法里手动添加初始化代码,并且要放在Forms初始化之前:
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // 先检查FirebaseApp是否已初始化,未初始化则手动初始化 if (FirebaseApp.Instance == null) { FirebaseApp.InitializeApp(this); } global::Xamarin.Forms.Forms.Init(this, savedInstanceState); LoadApplication(new App()); }
2. 排查NuGet包版本兼容性
Xamarin.Forms 2.5.0.280555属于比较旧的版本,而你更新的Xamarin.Firebase.Messaging 42.1021.1版本相对较新,两者很可能存在兼容性冲突:
- 尝试降级Firebase相关NuGet包到和Xamarin.Forms 2.5.x匹配的版本(比如40.x系列的Firebase.Messaging),或者如果业务允许,升级Xamarin.Forms到更高的稳定版本(比如3.x或4.x,不过要注意其他依赖的兼容性)。
- 确保所有Firebase相关的NuGet包(比如Firebase.Core、Firebase.Iid等)版本保持一致,不要混合不同版本的包。
3. 重新配置google-services.json的编译属性
除了设置Build Action为GoogleServicesJson,还要检查以下几点:
- 右键
google-services.json,在属性面板里把Copy to Output Directory设置为Copy if newer,确保编译时文件能正确复制到输出目录。 - 清理解决方案,删除项目的
bin和obj文件夹,然后重新编译,避免缓存导致的配置不生效。
4. 检查AndroidManifest.xml的服务配置
新版本的Firebase Messaging可能需要更新Manifest里的服务声明,确保你的AndroidManifest.xml里包含以下内容:
<service android:name="com.google.firebase.messaging.FirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
同时确认Manifest里已添加必要的权限:
<uses-permission android:name="android.permission.INTERNET" /> <!-- 针对Android 13及以上版本,需要添加通知权限 --> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
5. 验证Firebase控制台的应用配置
确认你的google-services.json是从Firebase控制台最新下载的,并且对应当前应用的包名。如果更新版本过程中修改了应用包名,需要在Firebase控制台重新注册应用并下载新的配置文件。
内容的提问来源于stack exchange,提问作者User2 Samcom
相关产品推荐
相关产品推荐

