我正在使用Openfire和Asmack开发聊天应用程序。我有一个服务运行背景来保持连接活动并监听所有聊天的传入消息。到目前为止,我已经成功实现了一对一(单)聊天。下面的代码是我对所有单个聊天的倾听者。
chatmanager = connection.getChatManager();
chatmanager.addChatListener(
new ChatManagerListener() {
@Override
public void chatCreated(Chat chat, boolean createdLocally)
{
if (!createdLocally) {
chat.addMessageListener(new MyNewMessageListener(getApplicationContext()));
}
}
});
但现在我的问题是如何为MultiUserChat消息实现相同的功能?希望你们能给我一个帮助。谢谢!
答案 0 :(得分:0)
我解决了我的问题,但不确定这是最好的方法。但是,希望这会帮助你们,并且总是欢迎更好的回答。
我首先添加addInvitationListener并在收到任何邀请后自动加入会议室
MultiUserChat.addInvitationListener(connection, new InvitationListener() {
@Override
public void invitationReceived(Connection conn, String room, String inviter, String reason, String password, Message arg5) {
MultiUserChat muc = new MultiUserChat(connection, room);
try {
muc.join(connection.getUser().substring(0, connection.getUser().indexOf("@")));
} catch (XMPPException e) {
Log.d("Error","line 123 : "+e.toString());
}
muc.addMessageListener(new ServiceGroupMessageListener(getApplicationContext()));
}
});
接下来,我将所有输入的房间名称存储到数据库中。然后创建一个从数据库中获取房间名称的函数,最后将消息监听器添加到每个房间。因此,当我下次再次打开应用程序时,它会将消息侦听器绑定到每个聊天室。
***确保将房间设置更改为在openfire方面保持不变