Firebase推送通知payload的body字段如何正确添加换行
FCM推送通知body换行解决方案
不同平台的通知栏对换行符的解析规则不同,直接在notification字段的body中添加\n、\r\n不会被所有设备识别,可按以下方案处理:
1. 安卓端解决方案
FCM默认自动渲染notification类型payload时,会转义所有转义字符,\n会被当成普通文本处理,不会生效,建议改用自定义通知渲染逻辑:
- 调整payload结构,移除顶层
notification字段,将通知内容放到data字段中:
// Firebase Functions 侧代码调整 const msg = { data: { title: title, body: "this is the content of first line: \n second line", badge: "1", sound: "default" } }; return admin.messaging().sendToDevice(token, msg);
- 安卓端接收到
data类型payload后,自行创建Notification实例,直接读取body字段内容设置给通知,此时字符串中的\n会被正常识别为换行符。
2. iOS端解决方案
iOS通知栏原生支持\n换行,只需确认转义字符未被二次转义即可:
- 如果推送内容是从JSON配置读取的,要确保JSON里的换行符写为
\\n,避免JSON解析时被转义丢失。 - 若仍不生效,可添加
apns配置开启通知内容修改权限:
const msg = { notification: { title: title, body: "this is the content of first line: \n second line", badge: "1", sound: "default", }, apns: { payload: { aps: { 'mutable-content': 1 } } } };
3. 跨平台通用兼容方案
如果需要同时兼容安卓和iOS,统一使用data payload,双端均自行实现通知渲染逻辑是最稳妥的方案,不会受FCM默认渲染逻辑限制。
注意:部分安卓定制ROM的通知栏本身会强制截断多行内容为单行,属于系统限制,无法通过代码修改。
内容的提问来源于stack exchange,提问作者ALEXANDER LOZANO
相关产品推荐
相关产品推荐

