如何排查FCM消息未送达问题?可通过返回的消息ID查询状态吗?
FCM消息接收异常排查方案
1. 用消息ID查询消息状态
可以通过你获取到的消息ID(格式如projects/xxxproject/messages/1720747275812907)调用FCM的messages.get接口查询消息后续状态。调用时需使用OAuth 2.0凭据授权,请求示例如下:
GET https://fcm.googleapis.com/v1/{name=projects/*/messages/*}
返回结果里的status字段会显示消息状态(如SUCCESS或FAILED),若为失败状态,还会附带error字段说明具体原因,比如设备令牌失效、应用未在后台运行、权限不足等,能直接帮你定位问题。
2. 排查Firebase项目配置差异
既然代码完全一致,重点检查两个项目的以下配置项:
- API与权限:确认两个项目的Cloud Messaging API均已启用,且发送消息的服务账号拥有
firebase.messaging.messages.send权限。 - 应用配置文件:对比两个应用的
google-services.json(安卓)或GoogleService-Info.plist(iOS),确保包名/Bundle ID、项目ID等信息与对应Firebase项目完全匹配,避免串用配置文件。 - 设备端权限:检查无法接收消息的应用,是否在设备上开启了通知权限、后台刷新权限(iOS)或自启动权限(安卓),这些系统权限直接影响FCM消息的推送与接收。
- 通知通道与APNs配置:如果发送的是通知消息,安卓端需确认通知通道配置正常;iOS端要检查APNs证书是否有效且已正确上传至Firebase控制台。
内容的提问来源于stack exchange,提问作者Bryant Harris
相关产品推荐
相关产品推荐

