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

如何确保Firebase Cloud Messaging大规模推送通知的一致性?

FCM批量推送送达问题排查与优化方案

我使用Firebase Cloud Messaging(FCM)向约700万用户推送通知,但无法确保所有设备稳定接收。以下是FCM聚合送达API返回的报告:

"data": {
        "countMessagesAccepted": "6882886",
        "messageOutcomePercents": {
          "delivered": 51,
          "pending": 5,
          "droppedAppForceStopped": 6,
          "droppedDeviceInactive": 41
        },
        "deliveryPerformancePercents": {
          "deliveredNoDelay": 32,
          "delayedDeviceOffline": 19
        }
      }

该推送采用Firebase User Segments(Analytics Targeting),显示41%推送因设备未激活被丢弃;使用Firebase Topics推送时,约50%推送因设备未激活被丢弃。另外,我曾仅推送给近30天活跃用户,目标量减半,但10台符合条件的测试设备平均仅2-3台收到通知,FCM后端未发送通知。注:单独用FCM令牌推送正常,仅批量推送(主题/用户细分)有问题。


问题1:FCM令牌过期后是否需从主题退订?这是否影响送达成功率?未存储令牌该如何处理?

  • 令牌过期后必须从主题退订,否则FCM会持续尝试向无效令牌推送,既浪费资源,还会拉低整体送达成功率(无效推送会被标记为丢弃,计入失败统计)。
  • 未存储令牌的处理方式:
    • 调用FCM主题管理API的getRegistrationIdsForTopic接口,获取主题下所有令牌,再通过批量验证逻辑(比如结合batchSend接口捕获错误)筛选无效令牌,调用unsubscribeFromTopic移除。
    • 依赖FCM自动清理机制:FCM检测到令牌无效(如设备卸载应用、令牌过期)时,会自动将其从主题移除,但该过程有延迟,建议搭配主动验证加速清理。

问题2:Firebase User Segments(Analytics Targeting)无法退订时该怎么做?

  • Firebase User Segments基于Analytics数据自动生成,无法直接对单个用户执行退订操作,可通过以下方式优化:
    • 在应用内添加自定义退订入口,让用户选择退出通知推送,同时将退订状态同步到Firebase Analytics的用户属性(如设置opt_out_notifications: true),后续创建Segments时排除该属性为true的用户。
    • 定期更新Segments筛选条件,比如排除近90天未活跃、已卸载应用的用户(可通过Analytics的user_engagement事件或app_uninstall事件判断)。
    • 导出Segments用户列表(通过Firebase控制台受众导出功能),验证令牌有效性后,通过FCM批量消息API排除无效令牌再推送。

问题3:如何提升通知送达成功率或排查推送异常?

提升送达成功率的方法

  • 精准定位活跃用户:优先推送近30天有应用交互的用户,通过Analytics的user_engagement事件或自定义活跃用户属性筛选,减少向无效设备推送的比例。
  • 优化令牌生命周期管理:应用启动、token刷新时,及时同步新token到服务器并删除旧token;定期(如每周)批量验证token有效性,移除无效令牌。
  • 适配厂商推送通道:针对小米、华为、OPPO等国内厂商,集成其自有推送通道,避免系统后台限制导致FCM推送被拦截。
  • 调整推送时机:避开用户休眠时段,利用Analytics的用户活跃时段数据,选择用户高频活跃的时间段发送通知。

批量推送异常排查步骤

  • 校验受众准确性:确认Segments筛选条件是否正确(比如近30天活跃用户的定义是否匹配测试设备行为);主题订阅用户是否符合预期。
  • 查看FCM控制台报告:在Firebase控制台的Cloud Messaging模块,查看推送详细统计(如送达数、丢弃数的细分原因),确认是否存在批量推送的配额限制或过滤规则。
  • 小范围测试验证:先创建包含少量测试设备的Segments或测试主题发送通知,观察是否所有设备都能收到,逐步扩大范围排查问题。
  • 检查API调用参数:批量推送时,确认是否设置了正确的优先级(如high)、是否开启延迟发送等选项,这些参数会影响FCM的发送逻辑。
  • 排查应用内接收逻辑:虽然单token推送正常,但批量推送可能触发厂商的批量拦截规则,需确认应用是否被系统后台限制,是否正确处理FCM通知回调。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 19:17:04