2016-10-23 31 views
0

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

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); 

我在拍一个初学者,请帮助我,我怎么可以监听提前来电预约request.Thanks ..

+0

当您向此用户发送订阅请求?这个“Stanz listner”不打印在日志中? – Farhan

+0

StanzaTypeFilter将实现一个函数'接受'你有什么回报? – Farhan

+0

我只是使用这个模块来听收到的订阅..我错了吗?如果我错了,你能告诉我,我应该写那里,而不是STANZA过滤器..预先感谢 –

回答

0

这是我如何在我的Android代码

StanzaFilter subscribefilter = PresenceTypeFilter.SUBSCRIBE; 
PresenceSubscribeListener subscribeListener = new PresenceSubscribeListener(context.getApplicationContext(), connection); 
connection.addSyncStanzaListener(subscribeListener, subscribefilter); 

完成,然后此连接对象已在Android中的长时间运行的服务中引用。这已经完成,以便当您的应用程序处于后台时收到数据包时,仍然可以处理传入的存在数据包。

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