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

通过FCM HTTP协议发送的Web端推送通知点击量统计问询

嘿,这个问题问到点子上了——毕竟推送的点击数据是衡量用户互动效果的核心指标,我来给你把方案拆解明白:

能不能统计FCM Web推送的点击次数?

先给你一个明确的结论:FCM本身不直接提供Web推送点击的原生统计功能,但我们完全可以通过自定义逻辑实现精准的点击追踪,而且这套方案已经非常成熟可靠。

具体的点击事件分析方案

下面是一步步的落地思路:

1. 在Service Worker里捕获点击事件

当用户点击Web推送通知时,浏览器会触发notificationclick事件,我们需要在Service Worker中监听这个事件,进而完成数据上报。

给你一段实用的代码示例(直接放到你的Service Worker文件里就行):

self.addEventListener('notificationclick', (event) => {
  // 先关闭通知(可选操作,提升用户体验)
  event.notification.close();

  // 组装点击事件的追踪数据,按需扩展字段
  const clickTrackingData = {
    // 每个推送的唯一标识,用来关联具体推送内容
    notificationId: event.notification.data?.notificationId || 'unknown',
    // 点击发生的时间戳
    clickTimestamp: Date.now(),
    // 如果有用户标识,可以带上,方便做用户维度分析
    userId: self.clients.matchAll().then(clients => {
      return clients[0]?.localStorage.getItem('userId') || 'anonymous';
    }),
    // 推送跳转的目标URL
    targetUrl: event.notification.data?.clickUrl || '/'
  };

  // 上报数据到你的后端接口,这里一定要加keepalive确保页面关闭也能上报成功
  event.waitUntil(
    fetch('/api/track-push-click', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(clickTrackingData),
      keepalive: true
    })
  );

  // 打开推送对应的目标页面(如果业务需要的话)
  event.waitUntil(
    clients.openWindow(clickTrackingData.targetUrl)
  );
});

这里划个重点:keepalive: true非常关键,因为用户点击推送后可能直接关闭页面,这个属性能保证上报请求不会被浏览器中断。

2. 发送推送时携带自定义标识

通过FCM HTTP API发送推送时,一定要在data字段里带上自定义的唯一标识(比如notificationId),以及其他你需要的分析维度(比如推送分类、目标URL等),这样点击时才能准确追踪到是哪一条推送被触发了。

给你一个FCM请求的简化示例:

{
  "to": "用户的FCM令牌",
  "notification": {
    "title": "你的订单已发货",
    "body": "点击查看物流详情"
  },
  "data": {
    "notificationId": "push_order_20240520_001",
    "clickUrl": "/order/12345",
    "pushCategory": "order_notification"
  }
}

3. 后端存储与分析落地

把前端上报的点击数据存储到你的数据库(比如Firestore、PostgreSQL都可以),之后就可以做各类分析:

  • 统计不同推送内容的点击率(点击数/推送发送数)
  • 按时间、用户群体、推送分类维度分析点击趋势
  • 关联用户的其他行为数据,分析推送对后续转化的影响(比如点击推送后是否完成下单)

如果不想自己搭建后端,也可以直接上报到GA4这类分析工具,比如在notificationclick事件里调用GA的事件上报API:

// 假设Service Worker中已引入GA的相关脚本
gtag('event', 'push_notification_click', {
  'notification_id': clickTrackingData.notificationId,
  'push_category': clickTrackingData.pushCategory
});

4. 几个关键注意事项

  • 确保用户已经授予推送权限,否则notificationclick事件根本不会触发
  • 要处理上报失败的情况:比如把失败的请求暂存在IndexedDB里,等用户下次在线时重试
  • 遵守隐私法规(比如GDPR),确保用户同意你收集这类追踪数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:07:33