You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:35:37