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

Android应用退出状态下setBackgroundMessageHandler无法触发求助

Expo托管工作流中Android退出状态下FCM setBackgroundMessageHandler不触发的解决办法

核心问题原因

在Expo托管工作流里,Android应用退出状态下,FCM如果收到带notification字段的消息,会直接由系统展示通知,不会触发你的setBackgroundMessageHandler;另外,Expo的Headless任务配置没到位也会导致后台处理器无法执行。

具体解决步骤

  • 注册Expo Headless任务
    单独新建一个文件(比如firebaseBackgroundMessage.js),内容如下:

    import messaging from '@react-native-firebase/messaging';
    
    export default async (message) => {
      console.log('remoteMessage', message);
      // 这里可以添加你需要的后台逻辑,比如存储数据、创建本地通知
      return Promise.resolve();
    };
    

    然后在app.json中添加Headless任务注册:

    {
      "expo": {
        "android": {
          "headlessTasks": [
            {
              "taskName": "firebaseBackgroundMessage",
              "jsPath": "./firebaseBackgroundMessage.js"
            }
          ]
        }
      }
    }
    
  • 修改FCM请求载荷
    删除请求中的notification字段,仅保留data和priority字段。因为带notification的消息在Android退出状态下会被系统直接处理,无法触发自定义的后台处理器。修改后的请求载荷:

    {
      "to": "f5WjEw4...",
      "data": {
        "body": "This is an FCM notification that displays an image!",
        "title": "FCM Notification"
      },
      "priority": "high"
    }
    

    如果需要展示通知,可以在setBackgroundMessageHandler里用react-native-firebase的通知模块手动创建本地通知。

  • 调整App.js的Headless处理逻辑
    确保Android的Headless模式能正常执行逻辑,修改后的代码:

    import messaging from '@react-native-firebase/messaging';
    
    messaging().setBackgroundMessageHandler(async remoteMessage => {
      console.log('remoteMessage', remoteMessage);
      // 可在此添加本地通知创建等逻辑
    });
    
    function HeadlessCheck({ isHeadless }) {
      if (isHeadless) {
        return null;
      }
      return <App />;
    }
    
    export default HeadlessCheck;
    
  • 确认配置完整性
    检查项目中的google-services.json是否正确放置,确保Expo构建时已读取到该文件,FCM的Android相关配置全部生效。

内容的提问来源于stack exchange,提问作者Bruno Ascenção

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:17:45