XMPP系列之Smack(4.1.3 )(四)创建聊天室

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 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

你可能感兴趣的:(XMPP系列之Smack(4.1.3 )(四)创建聊天室)