如何使用 asmack android 从 Openfire 中检索一对一的聊天记录

Posted

技术标签:

【中文标题】如何使用 asmack android 从 Openfire 中检索一对一的聊天记录【英文标题】:How to retrieve one to one chat history from Openfire using asmack android 【发布时间】:2015-01-23 09:32:24 【问题描述】:

谁能告诉我使用 asmack 库和 XMPP 协议从 openfire 服务器检索聊天历史记录到 android 客户端应用程序的确切代码?在我的 openfire 服务器中,我启用了合并的监控服务/打开存档服务,并且所有消息都成功存储到数据库中。但我不知道这些消息(聊天历史记录)如何检索到我在 ANDROID 中构建的客户端应用程序。我需要的聊天类型是一对一的用户聊天(不是群聊)。

我在this 的帮助下成功获取了群聊记录,但我想检索一对一的聊天记录

如果有人可以给我写代码,我将不胜感激。

谢谢!

【问题讨论】:

你认为服务器为什么会保留这样的历史记录? @OKas 目前我已经安装了监控插件,它在服务器端存储聊天对话,但我不知道如何检索 恐怕标准的 xmpp 协议不能提供你想要的。您必须实施一些自定义解决方案来访问监控插件数据。 @Okas 所以我们需要创建自定义 API 来检索用户的聊天记录?? 我找到了规范 XEP-0136: Message Archiving xmpp.org/extensions/xep-0136.html 。该规范能够向客户端发送消息历史记录,并且在 openfire 中它已经实现为监控插件。 【参考方案1】:
public class XMPPManager implements PacketListener 
........

   void connect()
   //Init connection configuration
       ......
   XMPPTCPConnection xmppTCPConnection = new XMPPTCPConnection(connectionBuilder.build());
   xmppTCPConnection .connect();
   xmppTCPConnection.addSyncStanzaListener(this, null);
 

 @Override
 public void processStanza(Stanza packet) 
   //Log.d("Log","Body - " + message.getBody());
 

【讨论】:

以上是关于如何使用 asmack android 从 Openfire 中检索一对一的聊天记录的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android aSmack 中实现 DeliveryReceiptManager

如何使用 asmack 在 android 中创建多用户聊天应用程序

使用新访问令牌在 android 上使用 asmack 进行 Facebook 聊天

无法在 Android 上使用 asmack 登录 Facebook

如何在 xmpp aSmack android 中设置个人资料图片?

如何在 Android (2014) 中使用 aSmack XMPP 库实现 facebook 聊天? [关闭]