美文网首页xmpp聊天Android开发
XMPP系列之Smack(4.1.3 )(四)创建聊天室

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

作者: 猿田 | 来源:发表于2017-07-25 15:53 被阅读300次

    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

    相关文章

      网友评论

        本文标题:XMPP系列之Smack(4.1.3 )(四)创建聊天室

        本文链接:https://www.haomeiwen.com/subject/fhnwkxtx.html