如何使用 smack 和 openfire 获取 IOS 中每个聊天会话的最后一条消息?

Posted

技术标签:

【中文标题】如何使用 smack 和 openfire 获取 IOS 中每个聊天会话的最后一条消息?【英文标题】:How to get last message of every chat session in IOS using smack with openfire? 【发布时间】:2016-08-18 07:36:02 【问题描述】:

我已经在我的 ios 应用程序中实现了聊天,它的连接和聊天成功,我还得到了一个用户的所有聊天历史一对一聊天,现在我想实现聊天历史屏幕,其中只显示聊天会话一个用户与其他用户(如果已创建)。

    openfire 有没有办法发送该列表? 有什么方法可以让我获得每次对话的最后一条消息?

我试图找到一个合适的解决方案,但没有运气,然后尝试了以下方法,

    我尝试了一些方法,但其中一种方法会发送所有聊天消息,我需要在应用程序中自行处理该列表然后使用,但这样会丢失大量数据。 另一种方法是点击每个用户获取他们的完整聊天记录,获取最后一条消息并显示,但这也没有那么有效。 还有另一种方法可以做到这一点,它可以创建一个数组,不断更新他的属性,如用户 ID、时间和最后一条消息。一旦用户更新其聊天,它将保持更新,然后使用它来填充所有聊天历史记录屏幕。

任何人都可以建议是否有更好的方法来实现这一点?

提前致谢。

【问题讨论】:

上述要求是自定义的,Openfire 不支持。所以你在客户端留下了一些逻辑。 【参考方案1】:

您需要在 Core Data 上保存每个用户的聊天历史记录,然后从 Core Data 显示每个用户的最后一条消息。 如果您正在使用“Robbiehanson”(https://github.com/robbiehanson/XMPPFramework) 框架,那么它已经在这样做了。

【讨论】:

请您告诉我如何使用 XEP-0313 获取与特定用户的聊天记录

以上是关于如何使用 smack 和 openfire 获取 IOS 中每个聊天会话的最后一条消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Openfire 中使用 smack

使用 smack 从消息存档 openfire 中获取最新对话

无法通过使用 smack、openfire 获得名册

Openfire:在android上使用smack向特定人广播消息

如何使用 Smack 在 XMPP openfire 中了解打字状态

如何使用 Smack 在 XMPP openfire 中了解打字状态