如何利用message_id获取Firebase通知的完整统计详情?
利用FCM message_id获取消息统计详情的方法
一、通过Firebase Admin SDK查询基础状态
FCM没有直接通过message_id拉取完整统计数据的API,但可以用Admin SDK的messaging().getMessage()方法查询消息的基础状态(比如发送状态、目标设备信息),示例Java代码:
import com.google.firebase.messaging.FirebaseMessaging; import com.google.firebase.messaging.MessageResult; public class FcmMessageQuery { public static void main(String[] args) throws Exception { String targetMessageId = "projects/uno-c0edf/messages/4368314790085249035"; MessageResult messageResult = FirebaseMessaging.getInstance().getMessage(targetMessageId); // 输出基础状态信息 System.out.println("消息状态: " + messageResult.getStatus()); System.out.println("目标设备令牌: " + messageResult.getToken()); // 可根据MessageResult类的其他方法获取更多字段 } }
注意:该方法仅能获取发送结果、目标设备等基础信息,无法拿到送达率、打开率这类核心统计数据。
二、BigQuery导出获取完整统计数据
这是官方推荐的获取FCM全量统计数据的方式,操作步骤如下:
- 在Firebase控制台进入项目设置 > 集成,找到BigQuery并完成关联配置,选择需要导出的FCM数据类型(消息事件、用户行为等)。
- 配置完成后,FCM会自动将包含
message_id的消息数据同步到BigQuery的对应数据表中,表结构通常包含message_id、event_type(送达、打开、点击等事件类型)、timestamp等字段。 - 编写SQL查询单条message_id的统计详情,示例:
SELECT event_type, COUNT(*) AS event_count, timestamp FROM `uno-c0edf.firebase_messaging.data` WHERE message_id = '4368314790085249035' GROUP BY event_type, timestamp ORDER BY timestamp DESC
注意:数据同步存在延迟,通常需要几分钟到数小时才能在BigQuery中看到最新数据。
三、FCM Reporting API(仅支持批量聚合统计)
如果不需要单条message_id的细粒度数据,可使用FCM Reporting API获取批量聚合统计,但该API不支持通过单个message_id查询,仅能按时间范围、应用、消息类型等维度返回统计结果。
内容的提问来源于stack exchange,提问作者Goro
相关产品推荐
相关产品推荐

