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

如何使用Notifee格式化后台/退出状态下接收的通知?

后台/退出状态下格式化Firebase通知并通过Notifee显示

完全可以实现这个需求,核心是调整Firebase消息的发送类型,并配合客户端的后台消息处理逻辑来完成,具体步骤如下:

1. 切换Firebase消息类型为「数据消息」

Firebase的「通知消息」(带notification字段)在应用后台/退出时会被系统直接接管显示,无法触发自定义处理;而「数据消息」(仅含data字段)则会在任何状态下都传递到客户端的消息处理器,这正是我们需要的。

发送消息时不要用notification字段,把所有内容放到data里,比如:

{
  "to": "目标设备的FCM Token",
  "data": {
    "rawBody": "{\"title\":\"系统通知\",\"content\":\"您有一条新的审批请求\",\"time\":\"2024-05-20 15:00\"}"
  }
}

这里rawBody就是你原本要放在通知body里的JSON字符串。

2. 客户端后台解析并通过Notifee显示

在Firebase的后台消息处理回调中,解析data里的JSON内容,格式化后调用Notifee展示:

以React Native为例:

import messaging from '@react-native-firebase/messaging';
import notifee from '@notifee/react-native';

// 后台消息处理函数,应用后台/退出时触发
messaging().setBackgroundMessageHandler(async remoteMessage => {
  // 解析rawBody中的JSON结构
  const notificationPayload = JSON.parse(remoteMessage.data.rawBody);
  // 自定义格式化显示内容
  const formattedBody = `📢 ${notificationPayload.title}\n${notificationPayload.content}\n⏰ ${notificationPayload.time}`;
  
  // 用Notifee显示格式化后的通知
  await notifee.displayNotification({
    title: notificationPayload.title,
    body: formattedBody,
    android: {
      channelId: 'your-notification-channel-id', // 提前创建好的通知渠道ID
    },
  });
});

3. 必要的配置检查

  • Android:确保AndroidManifest.xml中注册了Firebase的后台消息服务,并且已经创建了Notifee所需的通知渠道。
  • iOS:开启推送权限,在AppDelegate中配置Firebase消息的处理逻辑,确保后台消息能被正常接收。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:10:51