使用带有smack库的MucLight XEP开发Chat APP组功能 ,问题是我能够成功地将消息发送到组,但是当它收到消息时我会感到困惑,在smack库中我们有
multiUserChatLight.addMessageListener (new MessageListener ( ) {
@Override
public void processMessage(Message message) {
}
});
但它的组特定侦听器,意味着它只听多用户聊天引用组,其中一些不是我需要的,因为每当我重新连接聊天服务器时,我都需要在我参与的每个组中注册这个监听器,意见不好。
另一种方法是注册packetlistener
,这对于某些情况也很有问题,比如作为小组成员,我收到了发送到小组的消息,
那么还有其他选择吗?
有人可以告诉我哪里错了吗?
答案 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。