0
我正在实施Android一对一聊天使用ejabberd。我在ejabberd配置文件中启用了mod_mam
模块。现在我可以在mysql
数据库中存储聊天。但我无法检索聊天记录。我在我的android应用程序中使用smack库。 我GOOGLE了我的问题,但找不到任何解决方案。 任何人都可以告诉我一个解决方案?在此先感谢。我如何检索从MySQL数据库使用smack客户端聊天记录ejabberd
我正在实施Android一对一聊天使用ejabberd。我在ejabberd配置文件中启用了mod_mam
模块。现在我可以在mysql
数据库中存储聊天。但我无法检索聊天记录。我在我的android应用程序中使用smack库。 我GOOGLE了我的问题,但找不到任何解决方案。 任何人都可以告诉我一个解决方案?在此先感谢。我如何检索从MySQL数据库使用smack客户端聊天记录ejabberd
我运用下面的方法来使用smack form mysql来获取归档消息。 它返回DB的最后maxResults
结果。 下面的代码基本上利用现有的库方法来获取重新编译。
public MamManager.MamQueryResult getArchivedMessages(String jid, int maxResults) {
MamManager mamManager = MamManager.getInstanceFor(connection);
try {
DataForm form = new DataForm(DataForm.Type.submit);
FormField field = new FormField(FormField.FORM_TYPE);
field.setType(FormField.Type.hidden);
field.addValue(MamElements.NAMESPACE);
form.addField(field);
FormField formField = new FormField("with");
formField.addValue(jid);
form.addField(formField);
RSMSet rsmSet = new RSMSet(maxResults, "", RSMSet.PageDirection.before);
MamManager.MamQueryResult mamQueryResult = mamManager.page(form, rsmSet);
return mamQueryResult;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
要分页方式使用得到这个函数的中
public MamManager.MamQueryResult getMessageBefore(String jid, String messageId) {
MamManager mamManager = MamManager.getInstanceFor(connection);
try {
MamManager.MamQueryResult mamQueryResult =
mamManager.pageBefore(JidCreate.bareFrom(jid), messageId, pageSize);
return mamQueryResult;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
希望这有助于。