无法从XMPP服务器检索存档的消息

时间:2019-04-09 08:06:43

标签: android xmpp smack

我一直在尝试从MAM中获取存档消息,并使用smack api的内置功能来检索用户的所有存档消息,例如abc@xmpp.domain.com 使用queryArchive(...)及其所有其他重载的变体,它总是返回计数0

 try {
            if (lastMessageMamId == null) {
                mamQueryResult = getArchivedMessages(mamManager,chat.getUser().getJid().toString(), PAGE_SIZE);
                //  mamQueryResult = mamManager.queryArchive(50);
            } else {
                mamQueryResult = mamManager.pageAfter(chat.getUser().getJid(), lastMessageMamId, PAGE_SIZE);
            }
        }

,它始终返回计数0作为使用

初始化mamManager的转发消息的结果
org.jivesoftware.smackx.mam.MamManager mamManager
                = org.jivesoftware.smackx.mam.MamManager.getInstanceFor(connection);

我还创建了一种方法,该方法通过创建带有start和end的自定义数据包来获取已归档的消息,我认为它也是由其他一些接受开始和结束日期的方法内部创建的(queryArchive(...))< / p>

 public org.jivesoftware.smackx.mam.MamManager.MamQueryResult getArchivedMessages(org.jivesoftware.smackx.mam.MamManager mamManager, 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");

            Calendar calendar = Calendar.getInstance();
            calendar.get(Calendar.DAY_OF_MONTH-1);

            FormField formField = new FormField("start");
            formField.addValue("2010-06-07T00:00:00Z");
            form.addField(formField);


            FormField formField2 = new FormField("end");
            formField2.addValue("2019-04-08T18:10:02.907Z");
            form.addField(formField2);


            RSMSet rsmSet = new RSMSet(maxResults);


            return mamManager.page(form,rsmSet);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

但它也返回相同的计数0,但是我已经看到服务器上的存档表,其中包含消息,但是我不确定我缺少的是什么 我也尝试使用

查询妈妈
mamQueryResult = mamManager.queryArchive(50);

但同样的问题

<iq id="H6q9q-60" type="set">
    <query xmlns="urn:xmpp:mam:1" queryid="825e94c6-bd82-421e-b362-90072b421606">
        <x xmlns="jabber:x:data" type="submit">
            <field var="FORM_TYPE" type="hidden">
                <value>urn:xmpp:mam:1</value>
            </field>
            <field var="start">
                <value>2010-06-07T00:00:00Z</value>
            </field>
            <field var="end">
                <value>2019-04-08T18:10:02.907Z</value>
            </field>
        </x>
        <set xmlns="http://jabber.org/protocol/rsm">
            <max>50</max>
        </set>
    </query>
</iq>

我也尝试过使用pageBefore(...)和pageAfter(...),但它们似乎也无法正常工作。 在这一点上,我不确定,我缺少什么,我需要做些什么。这是与服务器相关的问题,我也不确定。

0 个答案:

没有答案