我正在研究 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/