FCM前台推送异常:Capacitor应用内部测试时系统托盘收通知
背景
FCM Android消息处理文档规定,推送通知仅在应用处于后台时才会显示在系统托盘,应用前台时通知不应出现。但我用Capacitor开发的应用,当前在Google Play内部测试套件进行Beta测试,发送推送通知时,即使应用处于前台,既会触发onMessageReceived回调,又会在系统托盘显示通知,与文档描述不符。
我怀疑的可能原因:
- 是否误读了FCM文档?
- 内部测试环境是否导致FCM无法正确检测应用前台状态?
- 老旧且不支持的Capacitor版本是否存在问题?
- 发送的FCM消息格式是否有误?
发送的FCM消息示例(使用最新版firebase-admin SDK):
{ data: { /* 自定义数据 */ }, notification: { title: "My title", body: 'My body' }, android: { notification: { priority: 'max', visibility: 'public' } }, apns: { payload: { aps: [Object] } }, tokens: /* 目标设备令牌 */ }
观察到的现象:
- iOS平台(Capacitor跨平台特性)存在相同问题,前台时既触发回调又显示系统托盘通知
- Android平台前台显示的通知不可点击
- 应用后台时,系统托盘通知正常显示且可点击,能正确打开应用并触发回调
- 刚从使用已关闭旧API的老旧firebase-admin SDK升级到最新版,此前无此问题
我的问题
- 该问题是否由内部测试环境导致?若是,正式版是否会恢复正常?
- 若不是,是否有人遇到过该问题?如何解决?
- 若没有相关经验,可能的问题原因是什么?
已尝试的操作
- 移除
android.notification.priority和.visibility属性,问题依旧 - 调研发现相关内容均是讨论如何实现前台显示系统托盘通知,找不到解决该异常的内容
内容的提问来源于stack exchange,提问作者joprocorp
相关产品推荐
相关产品推荐

