推送统计
推送统计聚合 push_logs 的真实投递结果:发送、送达、失败与按天趋势。当前没有厂商通道级拆分(channelStatsAvailable=false),也不包含厂商下发(因为下发未实现)。
概念
| 字段 | 含义 |
|---|---|
sent | 推送尝试数 |
delivered | webhook 返回成功的次数 |
failed | 失败次数(网络/非 2xx) |
trend[] | 按天 {date,sent,delivered,failed} |
source | 数据来源说明(push_logs) |
channelStatsAvailable | 恒为 false:无通道级拆分 |
notes[] | 口径说明(含未实现的厂商下发) |
- 管理端:
GET /api/admin/apps/{appkey}/push/stats?date&days。 - Open API:
push.stats.day按日期、push.stats.byId按pushId查询。 - 统计只覆盖通过 webhook 的推送;厂商通道配置不产生发送记录。
- 推送日志保留在应用状态中,随快照持久化;不做长期数据仓库。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#push(tab#push:推送通道)。 - 请求头
X-Admin-Secret与服务端IM_ADMIN_SECRET一致(本地默认dev-admin)。 - 已在控制台选中应用;带
{appkey}的接口都按应用隔离。 - 自托管版无购买、计费、套餐、续费与发票流程(不适用项);本页只覆盖配置、查询与治理接口。
步骤
- 看整体
按天查看 sent/delivered/failed;失败率突增时先查 webhook 可达性。
- 定位单次推送
用 Open API 的
push.stats.byId查具体pushId。 - 关联配置
失败持续时检查推送 webhook 与「回调服务」的投递日志。
- 解释口径
向业务方说明:没有厂商通道级数据,也没有厂商下发。
参数表
| 操作 | 方法与路径 | 参数 |
|---|---|---|
| 管理端统计 | GET /api/admin/apps/{appkey}/push/stats | date(YYYY-MM-DD)、days |
| Open API 按天 | POST /im/v2/push/stats/day | {date?} |
| Open API 按 ID | POST /im/v2/push/stats/by-id | {pushId} |
| 推送日志 | POST /im/v2/push/log/list | 分页参数 |
示例
最近 7 天推送统计
Shell
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/push/stats?days=7" \
-H 'X-Admin-Secret: dev-admin'
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/push/stats?date=2026-10-27" \
-H 'X-Admin-Secret: dev-admin'常见问题
为什么 delivered 总是 0?
如果没有配置推送 webhook 或没有触发推送,就没有记录;厂商通道配置不会产生记录。
能按 APNs/FCM 拆分吗?
不能。channelStatsAvailable=false,当前不采集通道维度。
统计和消息量一致吗?
不一致。推送只针对离线通知,且依赖 webhook 投递结果。
历史数据保留多久?
随应用状态保存,没有独立 TTL;长期分析请在接收方落库。