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

Android端Flutter应用接收Firebase推送时无响应崩溃求助

Flutter Android端接收Firebase推送通知时崩溃(iOS正常)

崩溃现象

  • 应用无论处于前台还是后台,接收Firebase推送通知时都会弹出「<应用名称> isn't responding」提示框,提供“等待”或“关闭应用”选项。

崩溃后日志

Thread[2,tid=3874,WaitingInMainSignalCatcherLoop,Thread*=0xb40000711baf8be0,peer=0x140048b8,"Signal Catcher"]: reacting to signal 3

I/24.bizconnect2( 3862): 
I/24.bizconnect2( 3862): Wrote stack traces to tombstoned

当前环境配置

  • Flutter Version: 3.27.4 (stable通道)
  • Android Gradle Plugin: 8.2.0
  • Kotlin Version: 1.9.0
  • google-services Plugin: 4.4.2
  • Firebase Messaging Version: 15.2.5
  • 测试设备:多款Android真机和模拟器

相关代码

main.dart

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler);

  final pushService = PushNotificationService();
  pushService.requestNotificationPermissions();
  pushService.init();

  runApp(MyApp());

  pushService.getFcmToken();
}

后台消息处理器

@pragma('vm:entry-point')
Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  print('Handling background message: ${message.messageId}');
}

Android应用级build.gradle

plugins {
    id "com.android.application"
    id "kotlin-android"
    id "dev.flutter.flutter-gradle-plugin"
    id "com.google.gms.google-services"
}

dependencies {
    implementation platform('com.google.firebase:firebase-bom:32.7.0')
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'com.google.firebase:firebase-messaging'
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
}

AndroidManifest.xml相关配置

<service
    android:name=".MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/ic_notification" />

<meta-data
    android:name="com.google.firebase.messaging.default_notification_channel_id"
    android:value="high_importance_channel" />

已尝试的排查手段

  • 确认google-services.json已放置在android/app目录下
  • 验证google-services.json中的包名与应用包名一致
  • 更新所有Firebase依赖到最新版本
  • 检查Manifest中FCM服务声明正确
  • 尝试使用/不使用Firebase BOM
  • 多次清理并重建项目
  • 验证Flutter Firebase插件在Dart代码中初始化正确
  • 尝试降级Google Services插件版本
  • 确认Manifest包含必要的Firebase消息服务和权限
  • 测试带/不带自定义Deep Link payload的推送
  • 确保firebaseMessagingBackgroundHandler添加了@pragma('vm:entry-point')注解
  • 验证前台本地通知处理逻辑正常
  • 移除不必要的平台特定逻辑(无效果)
  • 尝试使用极简版PushNotificationService配置(仍崩溃)
  • 确认ic_notification.png已正确放置在res/drawable目录
  • 确认FirebaseMessagingService.java存在
  • 使用FlutterLocalNotificationsPlugin处理前台通知显示
  • 尝试在顶层后台处理器中调用await Firebase.initializeApp

补充说明

执行以下命令未得到明确崩溃原因:

~/Library/Android/sdk/platform-tools/adb logcat | grep -E "(flutter|Firebase|Exception|Error)"
~/Library/Android/sdk/platform-tools/adb logcat | grep Firebase

内容的提问来源于stack exchange,提问作者Nma Ndidi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:05:15