XMPP系列之Smack(4.1.3)(一)登录服务器
XMPP系列之Smack(4.1.3)(二)获取好友分组
XMPP系列之Smack(4.1.3 )(三)获取已加入的聊天室列表
这天儿犹如太上老君的八卦炉又再次倒落人间似得,一个字热,四个字热得要命!话说又过了好久没写点东西了,想想也有点小惭愧,废话不多说了,开始本篇的主题吧!
首先获取服务器名val SERVICE_NAME = mMultiUserChatManager.serviceNames
目的是为了获取MultiUserChat
这个对象,这里获取的其实是一个数组,然后取第一个元素(也就是我们前面搭建的服务器域名):
val userChat = mMultiUserChatManager.getMultiUserChat(roomName + "@" + SERVICE_NAME[0])
拿到userChat
后调用一次create(String nickname)
方法:
userChat.create(mUserVo.name)
到这里你肯定以为这就完了,no,no,no,还要进行最后一步:聊天室配置---->>>
created = XMPPConnectionManager.getInstance().configChatRoom(userChat)
这里的created
是一个Boolean对象,目的是为了创建成功回调后刷新列表,下面是配置单--->>>
/**
* 配置创建的聊天室信息
*
* @param mUserChat
*/
public boolean configChatRoom(MultiUserChat mUserChat) {
try {
Form form = mUserChat.getConfigurationForm();
Form submitForm = form.createAnswerForm();
List<FormField> fieldList = form.getFields();
for (int i = 0; i < fieldList.size(); i++) {
FormField field = fieldList.get(i);
if (!FormField.Type.hidden.equals(field.getType())
&& field.getVariable() != null) {
// 设置默认值作为答复
submitForm.setDefaultAnswer(field.getVariable());
}
}
// 设置聊天室是持久聊天室,即将要被保存下来
submitForm.setAnswer("muc#roomconfig_persistentroom", true);
// 房间仅对成员开放
submitForm.setAnswer("muc#roomconfig_membersonly", false);
// 允许占有者邀请其他人
submitForm.setAnswer("muc#roomconfig_allowinvites", true);
// 能够发现占有者真实 JID 的角色
// submitForm.setAnswer("muc#roomconfig_whois", "anyone");
// 登录房间对话
submitForm.setAnswer("muc#roomconfig_enablelogging", true);
// 仅允许注册的昵称登录
submitForm.setAnswer("x-muc#roomconfig_reservednick", true);
// 允许使用者修改昵称
submitForm.setAnswer("x-muc#roomconfig_canchangenick", true);
// 允许用户注册房间
submitForm.setAnswer("x-muc#roomconfig_registration", false);
// 发送已完成的表单(有默认值)到服务器来配置聊天室
mUserChat.sendConfigurationForm(submitForm);
return true;
} catch (SmackException.NoResponseException | XMPPException.XMPPErrorException
| SmackException.NotConnectedException e) {
e.printStackTrace();
}
return false;
}
里面的配置可以根据需求看着改;好了,不出意外的话聊天室就这么轻易的创建成功了,惊不惊喜、意不意外!对了,除了配置方法外,其他使用的是kotlin语言,这是2017Google I/O大会上宣布的正式的官方开发语言,还没有接触kotlin的小伙伴可要加油了,赠上学习地址
https://wangjiegulu.gitbooks.io/kotlin-for-android-developers-zh/
http://www.jianshu.com/p/39b5bf5cf962
https://juejin.im/entry/592e93b144d90400645f16f8
网友评论