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

完成FCM交付指标配置后,BigQuery无MESSAGE_DELIVERED事件数据

解决FCM BigQuery仅上报MESSAGE_ACCEPTED无MESSAGE_DELIVERED问题

针对你遇到的BigQuery仅接收MESSAGE_ACCEPTED事件、缺失MESSAGE_DELIVERED的问题,可按以下步骤排查修复:

1. 确认客户端SDK版本兼容性

你当前使用的FCM客户端SDK为9.8.4,experimentalSetDeliveryMetricsExportedToBigQueryEnabled作为实验性API,旧版本可能存在交付事件上报的缺陷。建议升级至v9.x系列的最新稳定版(或直接迁移到v10+),确保API的完整功能支持。

2. 验证Data消息的客户端处理逻辑

MESSAGE_DELIVERED事件的触发依赖客户端成功处理消息:

  • 前台场景:必须确保onMessage回调正常执行(无未捕获异常),FCM SDK仅在回调触发后才会上报交付事件。
  • 后台Service Worker场景:onBackgroundMessage回调需完整执行,且showNotification调用成功。检查Service Worker控制台日志,确认:
    • 回调内无报错中断流程
    • 用户已授予浏览器通知权限,未被阻止

3. 调整实验性API的调用时机

在Service Worker中,建议将experimentalSetDeliveryMetricsExportedToBigQueryEnabled的调用放在activate事件内,确保在Service Worker激活后再启用上报:

self.addEventListener('activate', (event) => {
  event.waitUntil(
    Promise.all([
      experimentalSetDeliveryMetricsExportedToBigQueryEnabled(messaging, true),
      self.clients.claim()
    ])
  );
});

4. 检查Admin SDK消息发送参数

确保发送的是纯Data消息,不要混合notification字段(混合后会被识别为Notification消息,交付判定逻辑不同)。正确的Data消息发送示例:

const message = {
  token: 'DEVICE_TOKEN',
  data: {
    title: 'Test Title',
    body: 'Test Body'
  }
};

admin.messaging().send(message);

5. 确认FCM BigQuery配置与数据延迟

  • 登录FCM控制台,检查BigQuery导出配置是否勾选了DELIVERED事件类型
  • FCM数据导出到BigQuery存在1-2小时的延迟,请勿立即查询,等待足够时间后再验证数据

6. 排查浏览器限制

部分浏览器(如Chrome)在标签页后台或浏览器最小化时,会限制Service Worker的执行优先级,可能导致交付事件上报延迟。可先在前台打开页面测试消息发送,确认是否能正常触发MESSAGE_DELIVERED。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:53:12