【发布时间】:2017-02-27 19:19:39
【问题描述】:
我知道在发布消息后,谷歌会发回一个消息 ID,这并不意味着该消息已经发送到设备。
是否可以在 FCM 中接收已发送通知的发送报告?
【问题讨论】:
标签: android firebase google-cloud-messaging firebase-cloud-messaging
我知道在发布消息后,谷歌会发回一个消息 ID,这并不意味着该消息已经发送到设备。
是否可以在 FCM 中接收已发送通知的发送报告?
【问题讨论】:
标签: android firebase google-cloud-messaging firebase-cloud-messaging
是的,message_id 仅标识消息已成功传递到 FCM 服务器。
December 17, 2019 - FCM Update
FCM 已取消对通过 XMPP 协议发送收据的持续支持。开发者应在 FCM 客户端 SDK 中 enable delivery data export 代替 XMPP 交付回执。
我想你要找的是Delivery Receipts:
Delivery Receipt:如果应用服务器在下游消息中包含
delivery_receipt_requested,则XMPP连接服务器在收到设备收到消息的确认后会发送一个送达回执。
【讨论】:
方法projects.androidApps.deliveryData.list读取:
列出给定 Android 应用程序的聚合交付数据。
它需要一个parent 节点projects/{project_id}/androidApps/{appId} 传递然后返回:
{
"androidDeliveryData": [
{
"appId": "",
"date": {
"year": 2021,
"month": 12,
"day": 19
},
"data": { ... }
}, ...
}
术语“聚合”排除了单独的消息传递报告,
但每日汇总的统计数据总比没有统计数据要好:
{
"delivered": number,
"pending": number,
"droppedTooManyPendingMessages": number,
"droppedAppForceStopped": number,
"droppedDeviceInactive": number
}
{
"deliveredNoDelay": number,
"delayedDeviceOffline": number,
"delayedDeviceDoze": number,
"delayedMessageThrottled": number,
"delayedUserStopped": number
}
{
"priorityLowered": number
}
这些类别是一样的,例如发布。作为 Push Kit 通知回执。
SMS 标准还将提供消息回执 - 因为这些是
单独的消息 - 而不是每批 500 个 pub/sub 订阅者。
虽然这也不能保证,因为可以禁用这些回复。
【讨论】: