我已经在我的Android应用程序中成功地实现了一对一聊天。我使用SQLite来保存两个用户之间的聊天,就像在app数据库中一样。但是,当用户卸载应用程序时,此聊天将被删除。我需要知道的是如何保存服务器上两个用户之间的聊天,这样每当用户恢复应用程序或登录到任何其他设备时,他都可以看到他以前的聊天。我在ejabberd服务器上启用了mod_archive和mod_mam,并且能够在应用程序中检索脱机消息。谢谢
发布于 2016-12-25 09:38:52
你需要跟随xep - 0136
http://xmpp.org/extensions/xep-0136.html
对于拍打,你需要用以下的方式:
public void loadArchiveMessages(Jid jid, XMPPTCPConnection xmppTcpConnection){
try {
MamManager mamManager=MamManager.getInstanceFor(xmppTcpConnection);
MamManager.MamQueryResult mamQueryResult = mamManager.queryArchive(jid);
List<Forwarded> forwardedMessages=mamQueryResult.forwardedMessages;
Iterator<Forwarded> forwardedIterator=forwardedMessages.iterator();
while (forwardedIterator.hasNext()){
Forwarded forwarded=forwardedIterator.next();
Stanza stanza=forwarded.getForwardedStanza();
if (stanza instanceof Message) {
String messageId=stanza.getStanzaId();
xmppTcpConnection.processMessage((Message) stanza);
}
}
} catch (XMPPException.XMPPErrorException e) {
e.printStackTrace();
} catch (SmackException.NotLoggedInException e) {
e.printStackTrace();
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (SmackException.NoResponseException e) {
e.printStackTrace();
}
}https://stackoverflow.com/questions/41311186
复制相似问题