无法在android - XMPP中获取消息历史记录

时间:2015-01-22 20:31:18

标签: android xml xmpp openfire asmack

我一直在寻找这个问题的解决方案超过3天..:/

我正在使用xmpp - openfire服务器为Android制作聊天应用程序。我成功连接并登录到服务器,现在我可以通过我的应用程序与Spark聊天..

但是现在我必须在一对一聊天(历史记录)中获取最近的消息,我读到我必须使用插件并请求消息..我使用以下请求使用Monitoring Service Plugin和Open Archive Plugin:

<iq type='get' id='user1'>
      <list xmlns='urn:xmpp:archive'
         with='admin@localhost'>
         <set xmlns='http://jabber.org/protocol/rsm'><max>30</max>
</set></list></iq>

我从android发送的那样:

    Packet packet = new Packet() {
        @Override
        public String toXML() {
            String xExtension = "<iq type='get' id='user1'>"+
            "<list xmlns='urn:xmpp:archive'"+
                    " with='admin@localhost'>"+
            "<set xmlns='http://jabber.org/protocol/rsm'><max>30</max></set></list></iq>";
            return xExtension;
        }
    };
    MainActivity.connection.sendPacket(packet);

和PackageListener:

    PacketFilter filter = new PacketFilter() {
        public boolean accept(Packet arg0) {
            return true;
        }
    };
    MainActivity.connection.addPacketListener(new PacketListener() {
      public void processPacket(Packet packet) {
          if(packet.getClass() == Message.class ) {
              Message message = (Message) packet;
                final String body = message.getBody();
                final String from = message.getFrom();
                Log.d(TAG, "Got Message : " + body);
          } else {
              Log.d("Chat", "Packet: " + packet.getClass());
              System.out.println("packet details : " + packet.toXML());
          }
      }
    }, filter);

所以我得到的答案如下:

packet details : <iq id="user1" to="user2@localhost/Smack" type="result"></iq>

虽然我可以在Openfire管理控制台中看到它们,但为什么我不能进行聊天..? 任何帮助都会得到很好的赞赏..谢谢。

0 个答案:

没有答案