XMPP 上的未读消息计数

Posted

技术标签:

【中文标题】XMPP 上的未读消息计数【英文标题】:Unread messages count on XMPP 【发布时间】:2021-07-07 13:30:14 【问题描述】:

我正在使用 MongooseIM 开发一个基于 XMPP 的聊天应用程序,我正在尝试在我的应用程序中实现未读消息的数量。

我使用XEP-0022 (Message Events) 来跟踪从服务器接收到消息、从客户端接收到消息、从另一个客户端看到消息的时间,并使用XEP-0430 (Inbox) 来跟踪我检索到的未读消息。来自 MAM。

我的主要问题是,当从收件箱请求消息时,它返回所有消息,而不仅仅是文本消息。澄清一下:它还返回发送以确认收到消息的消息以及所有中间消息,从而增加未读计数器并使其非常不切实际。

我能做些什么来解决这个问题?

【问题讨论】:

【参考方案1】:

您可以使用XEP-0333: Chat Markers 代替 XEP-0022(标记为过时)来传递传递/读取状态。 MongooseIM 收件箱知道 XEP-0333 标记,不会将它们计入未读邮件总数。如果您可以控制正在使用的 XMPP 扩展,这是最简单的选择。

【讨论】:

谢谢,它有效。最后一件事:我怎么知道服务器现在接受了没有 0022 的消息? 实际上设法使用 XEP-0184 实现了它。再次非常感谢!

以上是关于XMPP 上的未读消息计数的主要内容,如果未能解决你的问题,请参考以下文章

Quickblox 中公共对话的未读计数

Cassandra 未读消息计数

如何正确处理聊天消息应用程序的“读取” - “未读”状态?

FB PHP SDK 将未读消息状态更改为已读和计数未读消息

在 quickblox 中未收到未读消息计数

Android 未读消息计数显示在应用程序图标上