如何使用aSmack在Android设备上获取Openfire聊天记录?

时间:2013-01-27 06:33:34

标签: android xmpp chat smack asmack

我正在开发一个聊天应用程序,用户将与其中一位域专家的小组成员聊天。用户使用我的Android应用程序和域专家使用spark web进行聊天。我制作了Openfire安装程序和Spark Web设置,并使用aSmack库开发了Android聊天应用程序。我的应用用户可以与域专家聊天。到目前为止一切都很好。现在,我想在Android设备上显示用户与任何或特定专家的聊天记录。浏览网页后,我可以为我的开放式服务器安装Monitoring Service插件,该服务器在管理员端显示用户的聊天记录,如下所示。enter image description here

现在我想在我的Android应用中展示这段历史,我该如何实现这一目标。任何建议,最受欢迎。我正朝着正确的方向前进吗?还是有简单的方法来完成我的工作?有关此聊天历史记录将存储在Open Fire数据库中的任何信息,以便我可以使用Web服务进行SQL查询和获取数据,这是非常感谢。

3 个答案:

答案 0 :(得分:4)

您可以使用以下代码获取群聊历史记录:

DiscussionHistory history = new DiscussionHistory();
history.setMaxStanzas(0);


multiUserChat.join("username", "password", history, SmackConfiguration.getPacketReplyTimeout());

答案 1 :(得分:2)

如果您正在使用MUC(XEP-45),那么您可以在输入MUC时请求讨论历史记录。见XEP-45 7.2.14 Discussion History。使用(a)Smack时,这意味着您必须使用MultiUserChat.join(String nickname, String password, DiscussionHistory history, long timeout)来获取历史记录。

答案 2 :(得分:2)

我将监控服务插件添加到openfire,后者创建了一些额外的表来存储任意两个帐户之间的聊天对话详细信息。监控服务还为您提供数据库查询静态。从管理面板数据库静态,我可以获得哪些表,这些聊天详细信息存储在哪些列。还需要查询。使用上述信息,我的后端团队已经编写了Web服务来获取所需信息。这是我实施的方式。