【问题标题】:Notification Messaging Style where to store messages通知消息样式存储消息的位置
【发布时间】:2018-07-16 07:15:02
【问题描述】:

所以我正在构建一个消息传递应用程序,并且我正在尝试将 NotificationCompat.MessagingStyle 用于我的通知,它通常适用于一条消息,但添加的每条消息只是替换最后一条消息,而不是显示收到的每条消息直到那里清除或查看(期望的结果),看看他们说要添加这样一条消息的文档

.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);

【问题讨论】:

  • 确保您使用不同的 notificationId 来生成通知。
  • 不,事实并非如此,但谢谢,创建一个新的通知 id 会创建一个新的通知我想要做的是在现有通知中添加一条新消息

标签: android push-notification firebase-cloud-messaging


【解决方案1】:

我知道这是一个老问题,但这可能对某些人有用。

您可以从现有通知中提取以前的消息:

NotificationCompat.MessagingStyle style = NotificationCompat.MessagingStyle.extractMessagingStyleFromNotification(existingNotification);
style.getMessages();

【讨论】:

  • 这个解决方案+1。不需要使用数据库。如果有通知,您可以使用辅助函数获取现有通知,请参阅此answer
【解决方案2】:

所以我发现了如何做到这一点,但仍然不确定在哪里存储列表,但要添加一条消息,你实际上需要创建一个 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2017-03-15
    • 1970-01-01
    • 2016-11-14
    • 2023-03-17
    相关资源
    最近更新 更多