php xmpp 聊天室,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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>