2016-10-23 30 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。