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

Android应用在后台或关闭时能否获取FCM推送数据负载?

解决FCM后台/关闭状态下获取数据负载的问题

当然可以搞定!不过得先搞清楚FCM的两种消息类型,因为它们在应用后台或者完全关闭时的处理逻辑差挺多的:

1. 先分清FCM的两种消息类型

FCM消息主要分两类,触发逻辑天差地别:

  • 通知消息(Notification Message):由FCM SDK自动帮你弹出通知栏消息,当应用在后台/完全关闭时,onMessageReceived()不会被调用,数据会附加到启动应用的Intent里,得在启动的Activity里取。
  • 数据消息(Data Message):完全由咱们开发者说了算,不管应用是前台、后台还是彻底关闭,只要设备联网且FCM服务正常跑着,onMessageReceived()都会被调用。

2. 后台/关闭状态下的具体处理方法

方法一:发送纯数据消息

如果你的需求是不管应用啥状态都要直接拿到数据负载,建议你直接发送纯数据消息,给你个JSON格式的例子:

{
  "to": "你的设备Token",
  "data": {
    "title": "自定义标题",
    "content": "自定义内容",
    "order_id": "12345",
    "type": "payment_success"
  }
}

这种情况下,哪怕应用完全关掉了,FCM也会唤醒你的应用进程,调用onMessageReceived(),你就能在这个方法里处理数据——比如存本地、触发自定义的业务逻辑啥的。

方法二:处理混合消息(通知+数据)

如果必须要发既有通知栏展示、又带数据的混合消息(同时包含notification和data字段),那当应用在后台/关闭时:

  • 系统会自动弹出通知栏消息
  • 用户点击通知启动应用时,数据负载会被放在启动Activity的Intent extras里,你可以在Activity的onCreate()或者onNewIntent()里获取:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    // 提取数据负载
    Intent intent = getIntent();
    if (intent != null && intent.getExtras() != null) {
        for (String key : intent.getExtras().keySet()) {
            Object value = intent.getExtras().get(key);
            Log.d("FCM_DATA", "键: " + key + " 值: " + value);
        }
    }
}

注意:如果应用只是在后台没关掉,点击通知会调用onNewIntent(),所以这个方法里也要写处理逻辑哦。

3. 几个要注意的点

  • Android 12及以上的权限:得在Manifest里加POST_NOTIFICATIONS权限,不然后台通知可能弹不出来,数据获取也会受影响。
  • FCM服务注册:确保你的应用正确集成了FCM SDK,而且FirebaseMessagingService的子类已经在Manifest里注册好了:
<service
    android:name=".MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>
  • Doze模式的影响:如果设备进入Doze模式,FCM消息可能会延迟送达,但数据消息还是会被处理(只是慢一点),可以加个高优先级标记优化:
{
  "to": "你的设备Token",
  "priority": "high",
  "data": {
    "order_id": "12345"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:56:05