Flutter应用接收FCM后台通知时崩溃问题求助
Flutter+FCM第二次接收后台消息崩溃修复方案
你遇到的第二次接收FCM后台消息时的致命崩溃,根源是后台消息处理器中Firebase初始化未传入配置参数,加上AndroidManifest缺少通知通道配置,导致系统解析消息时触发空指针异常。以下是针对性修复步骤:
1. 修正后台消息处理器的Firebase初始化
后台隔离环境不会继承主程序的Firebase配置,必须显式传入DefaultFirebaseOptions。修改你的后台消息处理函数:
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, // 新增配置参数 ); print("Handling a background message: ${message.messageId}"); }
2. 添加Android默认通知通道配置
日志中提示Missing Default Notification Channel metadata in AndroidManifest,这会导致消息解析逻辑出现潜在问题。在android/app/src/main/AndroidManifest.xml的<application>标签内添加以下配置:
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" />
同时在android/app/src/main/res/values/strings.xml中添加通道ID字符串:
<string name="default_notification_channel_id" translatable="false">fcm_default_channel</string>
3. 确保Firebase依赖版本一致且最新
检查pubspec.yaml中的firebase相关依赖,升级到最新稳定版,避免版本不兼容导致的已知bug:
dependencies: firebase_core: ^2.15.0 # 替换为当前最新稳定版 firebase_messaging: ^14.6.5 # 替换为当前最新稳定版
执行flutter pub get更新依赖后,清理项目缓存并重新构建:
flutter clean flutter run
验证步骤
测试时确保应用处于后台或完全杀死状态,连续发送多条FCM消息,确认崩溃不再复现。
内容的提问来源于stack exchange,提问作者M. Ali BULUT
相关产品推荐
相关产品推荐

