Firebase HTTP V1发送静默推送无效,求正确Payload格式
FCM V1 API 静默通知正确Payload格式
FCM V1 API和旧版HTTP API的静默通知配置逻辑完全不同,你之前的写法有两个核心问题:
- 根节点的
content_available在V1接口中不再生效 - 携带了
notification节点会触发系统弹出可视化通知,违背静默通知的需求
纯静默通知(仅传递数据,无弹窗)
针对不同平台,配置方式如下:
iOS(APNS)
需要在apns.payload.aps中添加content_available: true,同时不能包含notification节点:
{ "message": { "topic": "device", "data": { "order_id": 123123, "notification_type": 1, "app_name": "my app" }, "apns": { "payload": { "aps": { "content_available": true } } } } }
Android
Android的静默通知不需要额外的content_available字段,只需保留data节点,同时避免notification节点。如果需要保证后台进程能接收,可设置高优先级:
{ "message": { "topic": "device", "data": { "order_id": 123123, "notification_type": 1, "app_name": "my app" }, "android": { "priority": "high" } } }
跨平台通用静默Payload
如果要同时支持iOS和Android,合并配置即可:
{ "message": { "topic": "device", "data": { "order_id": 123123, "notification_type": 1, "app_name": "my app" }, "android": { "priority": "high" }, "apns": { "payload": { "aps": { "content_available": true } } } } }
关键注意点
- 只要包含
notification节点,无论怎么配置,系统都会弹出通知,无法实现静默效果 - iOS端还需要确保App开启了“后台刷新”权限,否则静默通知无法触发后台处理
- Android端如果App被完全杀死,可能无法接收静默通知,这取决于系统的后台限制策略
内容的提问来源于stack exchange,提问作者Tufan Çağkan Söymen
相关产品推荐
相关产品推荐

