无需部署XMPP服务器,如何查询FCM消息状态(含iOS)?
嘿,我之前也遇到过一模一样的困扰——不想搭XMPP服务器,还要查API发送的特定消息状态,Google Play Console确实只能看控制台发的基础统计,完全满足不了API消息的查询需求。给你几个实用的方案:
用Firebase Admin SDK查Multicast消息状态
如果你是用Firebase Admin SDK发的批量消息,发送时会拿到一个multicast_id,直接调用messaging().getMulticastMessageStats(multicastId)就能获取这条批量消息的详细投递数据,包括每个iOS/Android设备的成功、失败或者延迟状态。不过要注意,这个接口只能查最近30天内的消息,所以记得保存好发送时返回的multicast_id。开启BigQuery集成做长期查询
要是你需要长期存储所有消息的状态,或者要查单个message_id,可以去Firebase控制台开启FCM的BigQuery集成。开启后,FCM会自动把所有消息的投递日志(包括API发送的)同步到你的BigQuery数据集里,你可以写SQL语句轻松筛选特定的multicast_id或message_id,还能对比iOS和Android的投递表现,非常适合做深度分析。用Webhook实时接收投递状态
发送消息的时候,你可以在Admin SDK的配置里加一个delivery_receipt_request,指定你的Webhook地址。FCM会在消息完成投递(不管成功还是失败)后,把状态推送到这个地址。这样你不用主动去查,就能实时拿到每条iOS/Android消息的状态,适合需要实时处理的场景。
这些方案都不用部署XMPP服务器,完全覆盖你的需求~
内容的提问来源于stack exchange,提问作者Tunerx

