Android 用于存储消息的通知消息样式
因此,我正在构建一个消息应用程序,并尝试将NotificationCompat.MessagingStyle用于我的通知它通常适用于一条消息,但添加的每条消息只会替换最后一条消息,而不是显示收到的每条消息,直到清除或查看(期望的结果),看看他们说要添加这样一条消息的文档Android 用于存储消息的通知消息样式,android,push-notification,firebase-cloud-messaging,Android,Push Notification,Firebase Cloud Messaging,因此,我正在构建一个消息应用程序,并尝试将NotificationCompat.MessagingStyle用于我的通知它通常适用于一条消息,但添加的每条消息只会替换最后一条消息,而不是显示收到的每条消息,直到清除或查看(期望的结果),看看他们说要添加这样一条消息的文档 .addMessage(messages[1].getText(), messages[1].getTime(), messages[1].getPerson()) .addMessage(messages[2].getText
.addMessage(messages[1].getText(), messages[1].getTime(), messages[1].getPerson())
.addMessage(messages[2].getText(), messages[2].getTime(), messages[2].getPerson())
这导致我假设他们将这些消息存储在某个数组中,但我不确定在何处实现这一点,就像我在同一个类中创建了一个新数组一样。我假设如果将其保存到共享首选项中(似乎内存有点大),或者可能保存在一个未读消息的小数据库中,结果将是相同的?我已经在我的消息中存储了一个值,用于判断它们是否已被发送或接收。我可以对所有未读消息运行一个查询,填充一个列表并对其进行迭代,尽管这似乎有点过分了,有什么想法吗
更新
仍然没有取得任何进展,试图制作一个邮件列表,并像这样添加它们,但仍然没有乐趣
NotificationCompat.MessagingStyle messagingStyle = new
NotificationCompat.MessagingStyle(message.getRecipientName());
messagingStyle.setConversationTitle(
getSmsTodayYestFromMilli(message.getTime_stamp().getTime()));
if (messages != null)
for(DatabaseMessage dbMessage : messages){
messagingStyle.addMessage(dbMessage.getMessage(),
dbMessage.getTime_stamp().getTime(),dbMessage.getRecipientName());
}
}
notificationBuilder.setStyle(messagingStyle);
因此,我找到了方法,但仍然不确定列表的存储位置,但要添加一条消息,实际上需要创建一条
NotificationCompat.MessagingStyle.message
,然后使用addMessage
方法,现在我正在尝试获取所有未读消息的列表并对其进行迭代,但它仍然存在问题,但我认为这些问题需要一个新的问题,这里添加了一个信息:
NotificationCompat.MessagingStyle messagingStyle = new
NotificationCompat.MessagingStyle(message.getRecipientName());
messagingStyle.setConversationTitle(getSmsTodayYestFromMilli(
message.getTime_stamp().getTime()));
if (messages != null){
Log.d(MYTAG,"list size " + messages.size());
for(DatabaseMessage databaseMessage : messages){
NotificationCompat.MessagingStyle.Message notificationMessage = new
NotificationCompat.MessagingStyle.Message(
databaseMessage.getMessage(),
databaseMessage.getTime_stamp().getTime(),
databaseMessage.getRecipientName()
);
messagingStyle.addMessage(notificationMessage);
}
}
notificationBuilder.setStyle(messagingStyle);
我知道这是一个老问题,但这对一些人来说是有用的 您可以从现有通知中提取以前的消息:
NotificationCompat.MessagingStyle style = NotificationCompat.MessagingStyle.extractMessagingStyleFromNotification(existingNotification);
style.getMessages();
请确保您正在使用不同的notificationId生成通知。不,情况并非如此,但谢谢您,创建新通知id将创建新通知我要做的是将新消息添加到此解决方案的现有通知+1。不需要使用数据库。您可以使用helper函数来获取现有通知(如果有),请参阅