我如何在smack openfire android中收听传入的订阅请求

时间:2016-10-23 18:01:13

标签: android xmpp openfire smack

我正在使用smack openfire创建一个Android聊天应用程序。我面临的问题是我知道如何发送和接受订阅请求,但我怎么知道我是否收到任何订阅请求。 我使用过Stanza监听器,但是listner只监听传入的聊天消息而不是订阅请求。 以下是我的代码

StanzaFilter filter=new StanzaTypeFilter(Message.class);
        PacketCollector collector=connection.createPacketCollector(filter);
        connection.addAsyncStanzaListener(new StanzaListener() {
            @Override
            public void processPacket(Stanza packet) throws SmackException.NotConnectedException {
                Log.wtf("MA","Stanz listner");
            }
        },filter);

我是smack的初学者,请帮助我如何收听收到的订阅请求。谢谢提前..

2 个答案:

答案 0 :(得分:0)

订阅请求不是Message。这是一个Presence

所以,你可能应该尝试:

StanzaFilter filter = new StanzaTypeFilter(Presence.class);

参考:RFC 3921 - Section 6 - Managing Subscriptions

答案 1 :(得分:0)

这就是我在Android代码中的表现

python cifar10_eval.py

然后在Android中长时间运行的服务中引用了此连接对象。这样做是为了当应用程序处于后台时收到数据包时,您仍然可以处理传入的状态数据包。

P.S。我在我的android代码中使用了smack 4.1.9。