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

Android:Firebase推送中onMessageReceived未调用时,启动Activity如何接收数据?

Firebase Cloud Messaging 消息接收逻辑详解

一、onMessageReceived 不被调用的场景

只有当发送的是纯通知消息(仅包含notification字段,无data字段),且应用处于后台或完全未运行状态时,Firebase SDK会直接接管这条通知,由系统在通知栏展示推送内容,此时onMessageReceived不会被触发。

二、通知数据自动进入启动Activity Intent的机制

当用户点击系统通知栏中的这条纯通知时,Firebase SDK会自动启动应用的启动页(AndroidManifest中配置的launcher Activity),并将通知的相关数据(如title、body,若有额外data字段也会包含在内)打包进启动Intent的extras中。你可以在启动Activity的onCreate或onNewIntent方法里通过getIntent().getExtras()获取这些数据。

三、你的测试结果为何不同?

你测试时onMessageReceived每次都能触发,大概率是因为你发送的是纯数据消息(仅包含data字段),或是通知+数据的混合消息——这类消息无论应用处于前台、后台还是未运行状态,onMessageReceived都会被调用,数据由你自行处理展示逻辑。

四、核心总结

  • 纯通知消息(仅notification字段):后台/未运行时系统接管,点击后数据自动进入启动Activity的Intent,onMessageReceived不执行。
  • 纯数据消息/混合消息:任何状态下onMessageReceived都会触发,数据不会自动进入启动Activity的Intent(除非你在onMessageReceived中通过PendingIntent手动传递)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:05:19