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

Flutter集成FCM后Android系统托盘不显示通知问题求助

Flutter FCM无法显示系统托盘通知的解决方案

核心原因

FCM在App前台运行时不会自动触发系统托盘通知,需手动借助本地通知插件实现;同时Android 8.0+要求配置通知通道,还要确保Manifest权限、图标等配置完整。

1. 集成本地通知插件

通过flutter_local_notifications插件处理系统托盘通知:

  • 在pubspec.yaml添加依赖:
dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^2.1.1
  firebase_messaging: ^14.0.3
  flutter_local_notifications: ^14.1.1
  • 初始化插件(建议在Firebase初始化后调用):
import 'package:flutter_local_notifications/flutter_local_notifications.dart';

final FlutterLocalNotificationsPlugin _localNotifications = FlutterLocalNotificationsPlugin();

Future<void> initLocalNotifications() async {
  const AndroidInitializationSettings androidInit =
      AndroidInitializationSettings('@mipmap/ic_launcher'); // 替换为你的通知图标资源
  const InitializationSettings initSettings =
      InitializationSettings(android: androidInit);
  await _localNotifications.initialize(initSettings);
}

2. 修改消息监听逻辑,触发系统通知

更新FCM前台消息监听,收到通知时调用本地插件显示系统托盘通知:

FirebaseMessaging.onMessage.listen((RemoteMessage event) {
  print("Firebase messaging recieved");
  print(event.notification!.body);

  // 配置Android通知参数
  const AndroidNotificationDetails androidDetails = AndroidNotificationDetails(
    'app_notification_channel', // 自定义通道ID
    '应用通知', // 通道名称
    channelDescription: '接收应用推送通知的通道', // 通道描述
    importance: Importance.max,
    priority: Priority.high,
    enableVibration: true,
  );
  const NotificationDetails notificationDetails =
      NotificationDetails(android: androidDetails);

  // 显示系统托盘通知
  _localNotifications.show(
    DateTime.now().millisecondsSinceEpoch ~/ 1000, // 唯一通知ID
    event.notification!.title,
    event.notification!.body,
    notificationDetails,
  );
});

3. 完善AndroidManifest配置

  • 添加Android 13+通知权限:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
  • 在application标签内配置默认通知图标和通道ID(需与代码中通道ID一致):
<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@mipmap/ic_launcher" />
<meta-data
    android:name="com.google.firebase.messaging.default_notification_channel_id"
    android:value="app_notification_channel" />

4. 确认消息发送类型

在Firebase控制台发送通知时,选择「通知」类型(而非纯数据消息)。混合消息(含通知和数据字段)在App后台会自动触发系统通知,前台则通过上述代码处理。

内容的提问来源于stack exchange,提问作者Pallavi Tapkir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:30:58