2016-10-23 1 views
0

Я создаю приложение для Android-андроида, используя smack openfire. Проблема, с которой я столкнулся, - это я знаю, как отправлять и принимать запрос на подписку, но как я могу узнать, получил ли я любой запрос на подписку. Я использовал прослушиватель 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

Я просто использую этот модуль для прослушивания входящей подписки ... Я ошибаюсь? Если я ошибаюсь, можете ли вы сказать мне, что мне следует писать там вместо фильтра строфы. Спасибо заранее –

ответ

0

запрос на подписку не Message. Вместо этого это Presence.

Таким образом, вы, вероятно, следует попробовать:

StanzaFilter filter = new StanzaTypeFilter(Presence.class);

Ссылка: RFC 3921 - Section 6 - Managing Subscriptions

0

Это, как я сделал в моем андроида код

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

И затем этот объект соединения имеет были указаны в долгосрочной перспективе на Android. Это сделано так, что, когда пакет получен, когда приложение находится в фоновом режиме, вы все равно можете обрабатывать входящий пакет присутствия.

P.S. Я использую smack 4.1.9 в своем коде Android.

Смежные вопросы