在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>();
所以就像处理每个组的所有听众一样,但我仍然无法使这个事情发挥作用