android - 在 Android 中获取 XMPP Open Fire 私有(private)聊天历史和消息存档

标签 android xmpp openfire

我正在研究 XMPP Open fire 我能够在私有(private)聊天和房间中发送和接收消息,也能够获得房间聊天的聊天历史但无法获得私有(private)聊天的消息历史我也想要实现 Android 私有(private)聊天和房间聊天中的消息存档。

最佳答案

XMPP 中的私有(private)消息存档

XMPP 服务器默认不存储私有(private)聊天记录。如果在服务器上启用,尚未传送到客户端的私有(private)消息将存储为“离线消息”。一旦客户端重新连接,这些就会自动传送和清除。您的客户端将像普通消息一样接收它们,除了它们将包含 timestamp of their initial transmission。 .

对于更持久的方法,有 XEP-0136: Message Archiving从未被广泛使用,或者更好(更容易实现) XEP-0313: Message Archive Management .

XEP-0313 服务器支持

对于 Openfire,有 a patch attached to OF-862已于 2015 年 9 月合并,是 4.0 版本的一部分。

如果你使用足够新的版本,ejabberd 和 prosody 也有支持。

无论哪种情况,您都需要 enable archiving for your account on the server .

XEP-0313 的客户端支持

根据您使用的客户端库,它可能已经支持,或者您需要使用适当的 XML 扩展代码对其进行扩展。

如果您使用 Smack (使用最广泛的 Android XMPP 库),它还不支持开箱即用,但 Smack 维护者有一个 local branch with MAM support , 和 MAM will be incorporated into the next release .

您需要实例化一个 MamManager为您的连接,并可以使用 queryArchive() 获取存档内容方法。在 MAM 分支中,没有用于配置帐户归档首选项的内置机制,但我想这也会在下一个版本中得到修复。

关于android - 在 Android 中获取 XMPP Open Fire 私有(private)聊天历史和消息存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29813931/

相关文章:

android - 无法发送和接收 XMPP 消息

java - 使用 HttpURLConnection 的 Android 分段文件上传 - 400 错误请求错误

Android配置已更改

android - 在 Android Studio 中使用预构建库和 jni

java - 当我使用 sendInvitation 方法或在新的 messageBuilder 中添加 withFromJid 参数时,警报 "Invalid jabber ID"

cocoa - Cocoa 中基于 Jabber 的服务器和客户端应用程序

php - 在 php 中设计问题服务器端编程

ios - 如何保证XMPP消息发送到openfire服务器?

Android XML 在另一个布局上插入一个布局

java - 无法通过XMPP登录openfire帐户