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

Flutter FCM推送通知 前台运行状态下通知点击事件如何监听

Flutter前台运行时监听通知点击事件实现方案

实现逻辑很明确:应用在前台运行时 Firebase 不会自动弹出系统通知,需要配合 flutter_local_notifications 主动弹出通知,点击事件直接由该包的内置回调监听即可,具体实现步骤如下:

1. 初始化时配置通知点击回调

在初始化 flutter_local_notifications 时传入 onDidReceiveNotificationResponse 回调,该回调会在用户点击你主动弹出的前台通知时触发:

import 'dart:convert';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:firebase_messaging/firebase_messaging.dart';

final FlutterLocalNotificationsPlugin localNotificationsPlugin = FlutterLocalNotificationsPlugin();

Future<void> initLocalNotification() async {
  // 安卓端初始化配置,替换为你自己的应用图标名
  const AndroidInitializationSettings androidInit = AndroidInitializationSettings('@mipmap/ic_launcher');
  // iOS端初始化配置
  const DarwinInitializationSettings iosInit = DarwinInitializationSettings();

  const InitializationSettings initSettings = InitializationSettings(
    android: androidInit,
    iOS: iosInit,
  );

  await localNotificationsPlugin.initialize(
    initSettings,
    // 前台通知点击回调
    onDidReceiveNotificationResponse: (NotificationResponse response) {
      // 取出弹出通知时传入的 payload 数据
      final String? payload = response.payload;
      if (payload != null) {
        // 解析为原始通知数据后处理业务逻辑,比如跳转页面、执行指定操作
        Map<String, dynamic> notificationData = jsonDecode(payload);
        // 此处编写你的业务处理代码
      }
    },
  );
}

2. 监听前台 Firebase 消息,主动弹出通知

监听 FirebaseMessaging.onMessage 流,应用在前台收到推送时手动调用弹窗方法,同时把通知携带的数据作为 payload 传入:

void listenForegroundMessage() {
  FirebaseMessaging.onMessage.listen((RemoteMessage message) {
    final RemoteNotification? notification = message.notification;
    final AndroidNotification? androidNotification = message.notification?.android;

    // 校验通知不为空时弹出系统通知
    if (notification != null && androidNotification != null) {
      localNotificationsPlugin.show(
        notification.hashCode,
        notification.title,
        notification.body,
        NotificationDetails(
          android: AndroidNotificationDetails(
            // 替换为你自己配置的通知渠道ID、名称、描述
            'custom_notification_channel',
            '消息通知',
            channelDescription: '用于接收应用推送消息',
            importance: Importance.max,
            priority: Priority.high,
          ),
        ),
        // 将Firebase携带的自定义数据转成JSON字符串传入
        payload: jsonEncode(message.data),
      );
    }
  });
}

注意事项

  • 安卓端需要提前配置好通知渠道,否则前台通知无法正常弹出
  • iOS端需要先向用户申请通知权限,否则无法接收任何推送通知
  • 建议将自定义数据以JSON字符串格式作为payload传递,解析和使用更方便

内容的提问来源于stack exchange,提问作者Ajay Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:54:03