Получить архив сообщений с сервера Ejabberd с помощью команды mam - PullRequest
0 голосов
/ 19 декабря 2018

Так что я не могу получить offline-messages, и я не могу получать архивы сообщений с моего ejabberd сервера.Я использую андроид студию с smack.Я пытаюсь использовать 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.Что я делаю?как мне это исправить.Я пытался и искал, и я действительно застрял!Заранее спасибо.

...