我正在开发XMPP Open fire我能够在私人聊天和房间内发送和接收消息,并且还能够获得聊天室聊天的历史记录,但无法获得私人聊天的消息历史记录,我也想要在私人聊天和Android聊天室实现消息存档。
答案 0 :(得分:5)
默认情况下,私有聊天记录不会存储在XMPP服务器上。如果在服务器上启用,则尚未传送到客户端的私人消息将存储为“脱机消息”。客户端重新连接后,会自动发送和清除这些客户端。您的客户将像普通邮件一样收到它们,但它们将包含timestamp of their initial transmission。
对于更持久的方法,XEP-0136: Message Archiving从未被广泛使用过,或者更好(更容易实现) XEP-0313: Message Archive Management 。
对于 Openfire ,有a patch attached to OF-862已于2015年9月合并,并且是 4.0 版本的一部分。
如果你使用最近的版本,还有ejabberd和韵律的支持。
在任何一种情况下,您都需要enable archiving for your account on the server。
根据您使用的客户端库,它可能已经支持,或者您需要使用适当的XML扩展代码对其进行扩展。
如果您使用的是 Smack (使用最广泛的Android XMPP库),则它尚未开箱即用,但Smack维护者有一个{{ 3}}和local branch with MAM support。
您需要为您的连接设置MAM will be incorporated into the next release,并可以使用MamManager
方法获取存档内容。在MAM分支中,没有内置机制来配置帐户归档首选项,但我想这也将在下一版本中修复。