如何查看Cloud Functions发送的FCM通知及调试接收异常
问题解答
1. 能否在Firebase或其他工具中直接查看已发送的通知内容?
- 自定义Firestore日志: 你的代码已经将通知标题、内容、状态等信息保存到了
notificationLogs集合中,这是最直接查看已发送通知详情的方式。你可以在Firebase控制台的Firestore面板中查看该集合的文档,获取每条通知的完整内容和发送状态。 - Firebase Cloud Logging: Cloud Function执行时会通过
console.log(message)打印通知的payload,你可以在Firebase控制台的「Cloud Functions > 日志」中搜索对应的日志条目,查看发送的通知内容。 - Firebase Campaigns板块: 仅能查看通过Campaigns界面或API创建的推送活动,通过Cloud Functions直接发送的主题通知不会显示在这里。
- FCM交付报告: 该板块仅提供聚合的发送、接收、曝光等统计数据,无法查看单条通知的具体内容。
2. 发送成功但无接收的调试步骤与测试方法
调试步骤
- 确认设备订阅状态:
- 检查目标主题的订阅人数:在Firebase控制台的「Cloud Messaging > 主题」中查看对应主题的订阅量,如果为0,说明没有设备订阅该主题。
- 验证客户端订阅逻辑:确保App代码中正确调用了订阅主题的API(如
FirebaseMessaging.getInstance().subscribeToTopic(topic)),并添加日志确认订阅成功。
- 检查设备状态与权限:
- Android设备:检查App是否被设置为省电模式、后台限制,确保通知权限已开启;查看设备是否处于离线状态。
- iOS设备:确认系统设置中已开启App的推送通知权限,且Firebase控制台中的APNs证书有效且未过期。
- 验证通知Payload与主题名称:
- 检查主题名称是否完全匹配(注意大小写不敏感,但需避免拼写错误)。
- 确认Payload格式正确:你的代码使用了
notification字段,该字段会由系统托盘处理,但如果App处于前台,需要在客户端代码中监听onMessageReceived事件才能接收并显示通知。
- 使用FCM测试工具:
- 在Firebase控制台的「Cloud Messaging > 发送你的第一条消息」中,选择同一主题发送测试通知,观察是否能收到。如果能收到,说明问题出在Cloud Function的触发或代码逻辑;如果不能,说明是设备或订阅问题。
- 查看设备端日志:
- Android:使用Logcat过滤
FirebaseMessaging标签,查看是否有接收通知的日志或错误信息。 - iOS:使用Mac的Console应用,选择对应设备并过滤推送相关日志,确认设备是否收到推送。
- Android:使用Logcat过滤
- 检查Admin SDK配置:
- 确认Firebase Admin SDK初始化正确,服务账号拥有「Cloud Messaging Sender」权限。
更有效的测试验证方法
- 使用Firebase模拟器套件: 本地运行Cloud Functions和FCM模拟器,无需发送真实通知即可测试触发逻辑和Payload格式。
- 测试单个设备Token: 暂时替换主题为单个设备的FCM Token发送通知,排除主题订阅问题。
- 客户端日志埋点: 在App中添加日志,当收到FCM通知时打印相关信息,确认通知是否到达设备端。
- 分阶段测试: 先测试前台接收,再测试后台、锁屏状态下的接收情况,覆盖不同场景。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

