[英]How can i retrieve chat history from mysql db using smack client ejabberd
我正在使用ejabberd實現Android一對一聊天。 我已經在ejabberd配置文件中啟用了mod_mam
模塊。 現在,我可以將聊天存儲在mysql
DB中。 但是我無法檢索聊天記錄。 我在Android應用程序中使用smack庫 。 我用谷歌搜索問題,但找不到任何解決方案。 任何人都可以告訴我解決方案嗎?
我使用下面的方法使用smack形式的mysql獲取已歸檔的消息。 它從數據庫返回最后的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;
}
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.