我需要在通知中嵌入换行符。我有两行不同的数据,我需要嵌入换行符来区分两者。我反驳了一个反斜杠,但这不起作用。
有没有办法做到这一点?
据我所知,除了创建自定义Notification
布局之外,没有办法做到这一点。 Notification
文档有一个逐步的过程,并且非常彻底。 Here is the link to that.
根据需要创建两行只意味着在布局XML中添加额外的TextView
。然后你只需将每个TextView
的文本设置为两行数据,如示例所示。
尽管其他人在这里说过,您不需要使用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手动处理
您需要在应用中制作自定义通知构建器。更多详细信息:https://developer.android.com/guide/topics/ui/notifiers/notifications.html#CustomExpandedView,我花了很长时间才找到让firebase在所有情况下调用onMessageReceived的方法。
基本上你通过api发送到firebase的消息必须在你的json请求中没有“notification”键到firebase服务器,并且只使用“data”键,如下所示,firebase服务将在上面列出的所有情况下调用你的onMessageReceived。
{
"to": "/topics/your_topic",
"data": {
"key1":"data_key1",
"title":"",
"line1":"data1",
"line2":"data2"
}
}