使用的openfire4.5 + smack 4.2
一、将加入群聊的人存入数据库中
源码自带的会将创建者加入ofmucaffiliation表中,普通成员就需要增加插件来实现。
插件详见https://github.com/lhy24680/mucPlugin
二、用户登录openfire时获取自己加入过的群聊
在登录之前使用
增加IQ过滤器
ProviderManager.addIQProvider("muc", "YANG", new MUCPacketExtensionProvider());
public class MUCPacketExtensionProvider extends IQProvider {
//登录成功后会返回用户原来登录过的房间
@Override
public IQ parse(XmlPullParser parser, int initialDepth) throws Exception {
int eventType = parser.getEventType();
MucUtil.mucInfoList.clear();
MUCInfo info = null;
while (true) {
if (eventType == XmlPullParser.START_TAG) {
if ("room".equals(parser.getName())) {
String account = parser.getAttributeValue("", "account");
String room = parser.nextText();
info = new MUCInfo();
info.setAccount(account);
info.setRoom(room);
String[] split = room.split("@");
info.setRoomName(split[0]);
info.setNickname(account);
Log.d("MUCPExtensionProvider","account is"+ account + "and room is"+room);
MucUtil.mucInfoList.add(info);
}
} else if (eventType == XmlPullParser.END_TAG) {
if ("muc".equals(parser.getName())) {
break;
}
}
eventType = parser.next();
}
return null;
}
}
配合openfire插件userMucList.jar使