我需要在通知中嵌入换行符。我有两行不同的数据,我需要嵌入换行符来区分两者。 我反驳了一个反斜杠,但这不起作用。
有办法做到这一点吗?
答案 0 :(得分:4)
据我所知,除了创建自定义Notification
布局之外,别无法做到这一点。 Notification
文档有一个分步过程,并且非常彻底。 Here is the link to that.
根据需要创建两行只意味着在布局XML中添加额外的TextView
。然后,您只需将每个TextView
的文本设置为两行数据,如示例所示。
答案 1 :(得分:1)
尽管其他人在这里说了什么,您也不需要使用RemoteViews或自定义布局来显示多行! 多行文字是可能的,但是只有在扩展通知时才可以。
为此,您可以使用NotificationCompat.BigTextStyle。而且,如果您阅读开发指南here,则会注意到他们提到了这个提示:
提示:要在文本中添加格式(粗体,斜体,换行符等),您可以add styling with HTML markup。
因此,换句话说:
val title = "My Title"
val body = "Line 1<br>Line 2<br><i>Italic Line 3</i>"
val formattedBody = SpannableString(
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) Html.fromHtml(body)
else Html.fromHtml(body, Html.FROM_HTML_MODE_LEGACY)
)
NotificationCompat.Builder(context, channelId)
.setColor(ContextCompat.getColor(context, R.color.colorPrimary))
.setContentTitle(title)
.setContentText(formattedBody)
.setStyle(NotificationCompat.BigTextStyle().bigText(formattedBody).setBigContentTitle(title))
.setSmallIcon(R.drawable.ic_small_notification_icon)
.build()
有关其工作原理的注意事项:
如果您不想在推送通知中发送HTML格式,那么另一种选择是使用某种降价格式,并在使用SpannableStringBuilder
建立通知之前手动进行处理答案 2 :(得分:0)
您需要在应用中制作自定义通知构建器。更多详细信息:https://developer.android.com/guide/topics/ui/notifiers/notifications.html#CustomExpandedView,我花了很长时间才找到让firebase在所有情况下调用onMessageReceived的方法。
基本上你通过api向firebase发送的消息必须在你的firebase服务器的json请求中没有“通知”键,并且只使用“数据”键,如下所示,firebase服务将在上面列出的所有情况下调用onMessageReceived。
{
"to": "/topics/your_topic",
"data": {
"key1":"data_key1",
"title":"",
"line1":"data1",
"line2":"data2"
}
}