所以我无法检索offline-messages
,也无法从ejabberd
服务器接收消息存档。我正在使用smack的android studio。
我正在尝试使用mamManager
来获取archive
,并且它不会引发错误,但是总是返回0。打印mamQueryResult.mamFin.toXML().toString())
会给我:
loadArchiveMessages: <iq to='user1@localhost/Ghost' from='user1@localhost' id='pEteK-23' type='result'><fin xmlns='urn:xmpp:mam:1' queryid='e3a7c52e-a0a9-443d-91c0-e628237da2a3' complete='true' stable='true'><set xmlns='http://jabber.org/protocol/rsm'><count>0</count></set></fin></iq>
下面(从另一个帖子中)检索档案的代码:
public void loadArchiveMessages(Jid jid, XMPPTCPConnection xmppTcpConnection){
try {
Log.d(TAG, "loadArchiveMessages: "+jid);
String jidwithoutGhost = jid.toString();
String[] finalJid = jidwithoutGhost.split("/");
jid = JidCreate.domainBareFrom(finalJid[0]);
MamManager mamManager=MamManager.getInstanceFor(xmppTcpConnection);
MamManager.MamQueryResult mamQueryResult = mamManager.queryArchive(jid);
Log.d(TAG, "loadArchiveMessages: "+ mamQueryResult.mamFin.toXML().toString());
List<Forwarded> forwardedMessages=mamQueryResult.forwardedMessages;
Iterator<Forwarded> forwardedIterator=forwardedMessages.iterator();
Log.d(TAG, "loadArchiveMessages: "+forwardedMessages.size());
while (forwardedIterator.hasNext()){
Forwarded forwarded=forwardedIterator.next();
Stanza stanza=forwarded.getForwardedStanza();
if (stanza instanceof Message) {
String messageId=stanza.getStanzaId();
String m = ((Message) stanza).getBody();
Log.d(TAG, "loadArchiveMessages: "+m);
}
}
} 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();
} catch (XmppStringprepException e) {
e.printStackTrace();
}
}
我认为该错误来自/ghost
部分。我该怎么办?我如何解决它。我一直在尝试和搜索,但我真的被卡住了!
预先感谢。