MultiUserChatLight组消息侦听器

时间:2017-07-16 11:00:48

标签: android smack multiuserchat xmpppy

使用带有smack库的MucLight XEP开发Chat APP组功能 ,问题是我能够成功地将消息发送到组,但是当它收到消息时我会感到困惑,在smack库中我们有

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

                }
            });

但它的组特定侦听器,意味着它只听多用户聊天引用组,其中一些不是我需要的,因为每当我重新连接聊天服务器时,我都需要在我参与的每个组中注册这个监听器,意见不好。 另一种方法是注册packetlistener,这对于某些情况也很有问题,比如作为小组成员,我收到了发送到小组的消息,

那么还有其他选择吗?

有人可以告诉我哪里错了吗?

1 个答案:

答案 0 :(得分: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。