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

Flutter集成FCM接收消息时Android应用崩溃求助

Flutter集成FCM后接收消息崩溃问题

在Flutter应用中使用FCM插件后,向Android模拟器发送云消息时,无论应用处于前台还是后台,接收消息后都会立即崩溃。

复现步骤

  • 在Android模拟器上运行Flutter应用
  • 进入Firebase控制台的Cloud Messaging模块
  • 向Android应用发送新通知
  • Android模拟器接收消息后应用崩溃

相关代码

主入口代码

import'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';

import 'homepage.dart';
import 'notificationservices.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  await Notification_Services.NotiSettings();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const HomePage(),
    );
  }
}

HomePage代码

import 'package:flutter/material.dart';
import 'notificationservices.dart';
class HomePage extends StatefulWidget {
  const HomePage({super.key});
  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  void initState() {
    super.initState();
     Notification_Services.NotiSettings();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
       Text("Data"),
        ],
      ),
    );
  }
}

Notification_Services类代码

import 'dart:developer';
import 'package:firebase_messaging/firebase_messaging.dart';
Future<void> BackgroundHandler(RemoteMessage message )async{
  log("Remote Message =${message.notification!.title}");
}
class Notification_Services {
  //initialization of firebase messaging

  static Future<void> NotiSettings() async {

    NotificationSettings Settings =
    await FirebaseMessaging.instance.requestPermission();
    if (Settings.authorizationStatus == AuthorizationStatus.authorized) {
      log("Initialied Successfully");
      FirebaseMessaging.onBackgroundMessage(BackgroundHandler);
      FirebaseMessaging.onMessage.listen((message) {

        log("Remote Message =${message.notification!.title}");

      });

    }
  }
}

调试控制台报错信息

Process: com.example.googlee, PID: 18130 E/AndroidRuntime(18130): java.lang.RuntimeException: Unable to create service com.example.googlee.java.MyFirebaseMessagingService: java.lang.ClassNotFoundException: Didn't find class "com.example.googlee.java.MyFirebaseMessagingService" on path: DexPathList[[zip file 

解决方案

1. 移除AndroidManifest.xml中无效的Service配置

报错核心是系统找不到com.example.googlee.java.MyFirebaseMessagingService类,说明你在android/app/src/main/AndroidManifest.xml中配置了该自定义FCM服务,但未实际创建对应类。打开该文件,删除类似以下的配置代码:

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

Flutter的firebase_messaging插件已默认实现后台消息处理逻辑,无需手动添加自定义Service。

2. 删除重复的初始化代码

main函数中已经调用过Notification_Services.NotiSettings(),但HomePage的initState里又重复执行了一次,可能引发重复监听异常。修改HomePage的initState:

@override
void initState() {
  super.initState();
  // 删除此行重复调用
  // Notification_Services.NotiSettings();
}

3. 清理并重建项目

执行以下命令清理缓存并重新构建应用:

flutter clean
flutter pub get
flutter run

4. 确保依赖版本兼容

检查pubspec.yaml中firebase_core和firebase_messaging的版本,使用兼容的稳定版,例如:

dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^2.24.2
  firebase_messaging: ^14.7.11

执行flutter pub get更新依赖。

内容的提问来源于stack exchange,提问作者Amjad khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:56:46