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

Flutter中如何标记FCM通知为已打开?解决控制台打开数为0问题

问题解答

是的,你需要手动上报通知打开事件,FCM不会自动统计用户点击通知的行为。具体实现如下:

Flutter端实现步骤

  • 针对不同状态下的通知点击场景,在对应的回调中调用Firebase Analytics的logEvent方法上报通知打开事件:

    import 'package:firebase_analytics/firebase_analytics.dart';
    
    // 处理应用前台/后台运行时点击通知的情况
    FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
      // 先处理你的业务逻辑,比如跳转指定页面
      // 上报通知打开事件
      FirebaseAnalytics.instance.logEvent(
        name: 'notification_open',
        parameters: {
          'notification_id': message.messageId, // 可选,关联具体通知ID
          'campaign_id': message.data['campaign_id'], // 营销活动通知可传活动ID
        },
      );
    });
    
    // 处理应用完全终止时点击通知启动的情况
    Future<void> setupNotificationOpenTracking() async {
      RemoteMessage? initialMessage = await FirebaseMessaging.instance.getInitialMessage();
      if (initialMessage != null) {
        // 处理初始消息的业务逻辑
        // 上报通知打开事件
        FirebaseAnalytics.instance.logEvent(
          name: 'notification_open',
          parameters: {
            'notification_id': initialMessage.messageId,
            'campaign_id': initialMessage.data['campaign_id'],
          },
        );
      }
    }
    
  • 确保项目已集成firebase_analytics依赖,在pubspec.yaml中添加:

    dependencies:
      firebase_analytics: ^10.4.0 # 替换为当前最新版本
    

关键注意点

  • 上报的notification_open事件会被FCM关联到对应的营销活动,从而更新控制台的“打开次数”统计。
  • 系统级通知(后台/终止状态)的点击事件必须通过getInitialMessage或onMessageOpenedApp捕获,这两个是上报的核心时机。
  • 统计数据存在延迟,上报成功后需等待1-2小时再查看FCM控制台的更新结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:37:06