1

在 XMPP 服务中,我连接到 xmpp 服务器,一旦建立连接,我将获取我当前所在的所有组,并将消息侦听器添加到每个组。
List<Jid> occupiedRooms = multiUserChatLightManager.getOccupiedRooms(JidCreate.domainBareFrom(ConstantXMPP.XMPPService.MUCLightService)); for (Jid jid : occupiedRooms) { MultiUserChatLight multiUserChatLight = multiUserChatLightManager.getMultiUserChatLight(JidCreate.entityBareFrom(jid.toString())); MUCLightRoomConfiguration configuration = multiUserChatLight.getConfiguration(); multiUserChatLight.addMessageListener(new org.jivesoftware.smack.MessageListener() { @Override public void processMessage(Message message) { Log.e("Group message/n content", "" + message.toXML()); if (message.getBody() != null && message.getBody().length() > 0) { Log.e("Message Sender", message.getFrom().asBareJid().toString()); Log.e("Text Message", message.getBody()); handleGroupTextMessage(message); } } }); } }

在服务中,这就是我向 muclight 房间添加听众的方式,并且当聊天活动未打开时我会收到消息,即,当用户处于最近的聊天列表活动中时,我会收到消息,但只要我打开聊天活动我没有收到任何数据包或消息,

addMessageListener 方法实际上是把消息监听器放入

Set<MessageListener> messageListeners = new    CopyOnWriteArraySet<MessageListener>();

所以这就像处理每个组的所有听众,但我仍然无法让这件事发挥作用

4

0 回答 0