如何使用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
相关产品推荐
相关产品推荐

