You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FCM通知接收时onMessageReceived未触发(API19正常/23、24异常)

嘿,针对你遇到的FCM onMessageReceived 在API23/24完全不触发的问题(API19反而正常),我整理了几个关键排查方向,你可以一步步来:

一、先搞清楚FCM的消息类型逻辑

FCM分两种核心消息类型,不同类型在API23+的处理逻辑有差异,这很可能是问题根源:

  • 通知消息:带notification字段的消息,App后台时系统会直接弹通知,不会走onMessageReceived;只有前台时才会触发这个方法。
  • 数据消息:只带data字段的消息,不管前台后台都应该走onMessageReceived——但你说连数据消息都不触发,那得先确认服务器的消息格式对不对。

划重点:如果是混合消息(同时有notification和data),API23+后台时系统只会弹通知,data会附加到App启动的Intent里,不会触发onMessageReceived,只有前台时才会走这个方法。

二、检查服务器的消息发送格式

先确保你发送的是纯数据消息,比如正确的JSON格式应该是这样:

{
  "to": "你的设备令牌",
  "data": {
    "title": "测试数据消息",
    "body": "自定义内容",
    "custom_key": "custom_value"
  }
}

如果服务器发的是混合消息,那后台时肯定不会触发onMessageReceived,得改成纯数据消息,然后在onMessageReceived里自己处理通知展示。

三、核对Manifest里的Service配置

API23+对组件配置的要求更严格,确保你的FirebaseMessagingService子类配置正确:

<service
    android:name=".你的Service类路径"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>
  • 别加android:enabled="false",不然服务会被禁用
  • 检查有没有其他第三方库也注册了com.google.firebase.MESSAGING_EVENT的服务,可能会覆盖你的实现(可以在Logcat搜FirebaseMessaging看服务注册日志)
四、检查Firebase SDK版本兼容性

API23/24对应Android6.0/7.0,确保你用的Firebase Messaging SDK版本是兼容的,建议用稳定的新版本,比如:

implementation 'com.google.firebase:firebase-messaging:23.0.0'

(如果是AndroidX项目,别混着用support库,全换成AndroidX依赖)

五、排查后台限制和电池优化

API23+引入了Doze模式和App Standby,虽然FCM消息理论上能绕过,但还是建议:

  • 把你的App加入电池优化白名单(设置→电池→电池优化→找到App,设为“不优化”)
  • 检查有没有第三方安全应用限制了App的后台运行权限
六、加日志调试定位问题

在onMessageReceived开头加个日志,方便确认是否真的没触发:

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    Log.d("FCM_TEST", "收到消息啦!数据内容:" + remoteMessage.getData());
    // 你的其他处理逻辑
}

然后在API23/24的设备上,用Logcat过滤FCM_TEST,看有没有日志输出。另外也检查下onNewToken是否能正常获取令牌,确保服务器用的是正确的设备令牌。

七、用Firebase控制台做测试

直接用Firebase控制台发送一条纯数据消息(选择“数据消息”选项),如果控制台发送能触发onMessageReceived,那问题肯定在你服务器的消息格式上;如果控制台也不行,那就是App端的配置或者SDK问题。


内容的提问来源于stack exchange,提问作者Anil M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:20:39