2017-07-16 3 views
0

スムーズライブラリ でMucLight XEPを使用してチャットAPPグループ機能を開発すると、問題はグループに正常にメッセージを送信できますが、メッセージリスンに来ると混乱しますMultiUserChatLightグループメッセージリスナー

multiUserChatLight.addMessageListener (new MessageListener () { 
       @Override 
       public void processMessage(Message message) { 

       } 
      }); 

しかし、そのグループ固有のリスナー、私はチャットサーバに再接続するたびに毎回、私は内のすべてのグループに対して、このリスナーを登録する必要があり、そのだけで、いくつかの方法がない私は必要なものmultiuserchatlight参照グループ、に耳を傾けること私が関与している、それは良い意見ではない。 もう1つの方法は、packetlistenerを登録することです。これは、グループIのメンバーがグループに送信したメッセージを受信したような場合もほとんど問題はありません。

私はどこが間違っているか教えていただけますか?

答えて

0

いつでもサーバーと接続して認証された場合、常にメッセージリスナーを登録する必要があります。私はStanzaListenerを使ってMucLightリスナを追加しました。

public RegisterXmppListener registerXmppListener; 

    public void registerMessageListener(){ 
    debugLog("registerMessageListener"); 
    if(mStanzaListener !=null) 
     connection.removeSyncStanzaListener(mStanzaListener); 

    StanzaTypeFilter filter = new StanzaTypeFilter(Message.class); 

    mStanzaListener=new StanzaListener() { 
     @Override 
     public void processStanza(Stanza stanza) throws SmackException.NotConnectedException, InterruptedException { 
      if(registerXmppListener!=null) { 
       registerXmppListener.onMessageReceived(stanza); 
      } 
     } 
    }; 
    connection.addSyncStanzaListener(mStanzaListener, filter); 
} 

registerMessageListenerは、サーバーで認証されたときに登録します。