Firebase FCM推送通知在Android设备上接收不一致问题求助
解决部分Android设备无法接收FCM推送的配置方案
针对你遇到的Ionic应用通过Pigeon Elixir发送FCM推送时,部分Android设备收不到通知(iOS正常、FCM返回成功)的问题,以下是几个可落地的配置调整和排查方向:
补充Android专属消息配置
Android 8.0+对通知有严格的通道要求,且默认消息优先级可能导致推送被系统拦截。在消息负载中添加android节点,配置以下关键参数:priority: 设置为high,确保推送能优先送达,避免被省电策略延迟或拦截notification.channel_id: 指定应用已创建的通知通道ID(需在Ionic应用中提前配置好对应通道)- 可选:添加
ttl设置推送的存活时间,避免过期消息无法送达
修改后的消息负载示例:
{ "message": { "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "notification": { "title": "Test title", "body": "Test message" }, "data": { "notification_id": "123" }, "apns": { "payload": { "aps": { "badge" : 1 } } }, "android": { "priority": "high", "notification": { "channel_id": "your_app_default_channel", "sound": "default" } } } }验证Pigeon Elixir的配置正确性
确认Pigeon库是否正确支持传递Android的配置参数:- 检查Pigeon的版本,建议升级到最新稳定版,避免旧版本的兼容性问题
- 确保在Elixir代码中正确构造了
android相关的消息结构体,而非仅传递基础的notification和data字段
设备端的关键排查点
部分Android设备的系统限制是推送丢失的常见原因:- 检查设备的Google Play服务版本,FCM依赖该服务,版本过低会导致推送失败
- 引导用户关闭应用的电池优化权限,部分省电模式会阻止应用接收后台推送
- 针对小米、华为、OPPO等国产设备,需要将应用加入系统的后台运行白名单,并关闭对应的推送拦截功能
- 确认应用未被用户强制停止,强制停止状态下应用无法接收任何FCM推送
区分通知消息与数据消息的处理逻辑
你的负载同时包含notification和data字段:- 当应用处于前台时,需要确保Ionic的推送插件(如
@capacitor/push-notifications)正确监听pushNotificationReceived事件,处理混合类型的消息 - 当应用处于后台时,系统托盘会显示
notification内容,但data字段需要在用户点击通知后才能获取,需确认插件是否正确传递这部分数据
- 当应用处于前台时,需要确保Ionic的推送插件(如
内容的提问来源于stack exchange,提问作者Kasparas Morkūnas
相关产品推荐
相关产品推荐

