群成员管理
更新时间: 2024/08/16 17:53:39
网易云信 NIM SDK 支持用户查询、添加、移除群组成员,管理成员角色等功能,拥有完善的成员权限体系及管理功能,群组内所有用户根据权限分为群主、管理员、以及普通成员。
技术原理
网易云信 NIM SDK 的 TeamInterface
提供管理群组成员的相关方法,帮助您快速实现和使用群组的成员权限体系及管理功能。
群组中有三种角色,群主(owner
),群组管理员(manager
)以及群组普通成员(normal
) 。
- 群主默认为群组创建者,后续可通过
transferTeam
转让群主身份。 - 群组管理员由群主分配,群主通过
addTeamManagers
添加群组管理员。 - 用户进入群组后,默认为群组的普通成员,后续可联系群主修改角色。
前提条件
管理群组管理员
添加群组管理员
只有群主才拥有添加群组管理员的权限。
通过调用addTeamManagers
方法添加群组管理员。
群主添加管理员后,所有群成员都会收到群组通知消息,类型为 addTeamManagers
,该群组通知消息中包含群主账号、被添加为管理员的用户账号、对应群组 ID以及群管理员列表。
参数说明:
参数 | 类型 | 说明 |
---|---|---|
teamId | String | 群ID |
accounts | Array | 添加的群管理员账号列表 |
done | done | 结果回调函数 |
示例代码:
nim.addTeamManagers({
teamId: '123',
accounts: ['a2', 'a3'],
done: addTeamManagersDone
});
function addTeamManagersDone(error, obj) {
console.log('添加群管理员' + (!error?'成功':'失败'), error, obj);
}
移除群组管理员
只有群主拥有移除群组管理员的权限。
通过调用 removeTeamManagers
方法来移除群组管理员。
群主移除群管理员后, 所有群成员都会收到群组通知消息,类型为 removeTeamManagers
,该群组通知消息中包含群主账号、被移除管理员的用户账号、对应群组 ID以及被移除群管理员列表。
参数说明:
参数 | 类型 | 说明 |
---|---|---|
teamId | String | 群ID |
accounts | Array | 移除的群管理员账号列表 |
done | done | 结果回调函数 |
示例代码:
nim.removeTeamManagers({
teamId: '123',
accounts: ['a2', 'a3'],
done: removeTeamManagersDone
});
function removeTeamManagersDone(error, obj) {
console.log('移除群管理员' + (!error?'成功':'失败'), error, obj);
}
修改群成员信息
修改群组成员的群昵称
只有群主才有修改群组成员的群昵称的权限。
通过调用 updateNickInTeam
来修改群组成员的群昵称。
群主和群管理员修改群成员昵称后,所有其他在线的群成员会收到初始化 SDK 时传入的 onupdateteammember
回调。
参数说明:
参数 | 类型 | 说明 |
---|---|---|
teamId | String | 群ID |
account | String | 被修改群昵称的用户账号 |
nickInTeam | String | 群昵称 |
done | done | 结果回调函数 |
示例代码:
nim.updateNickInTeam({
teamId: '123',
account: 'a2',
nickInTeam: '群昵称',
done: updateNickInTeamDone
});
function updateNickInTeamDone(error, obj) {
console.log('修改群成员昵称' + (!error?'成功':'失败'), error, obj);
}
修改自己在群组中信息
通过调用 updateInfoInTeam
来修改自己在群组中的信息。
目前支持修改以下属性:
nickInTeam
: 自己在群组中的群昵称。更新昵称后, 所有其他在线的群成员会收到初始化 SDK 时传入的onupdateteammember
回调。muteNotiType
: 群消息的提醒策略,0:开启提醒;1:关闭消息提醒 ;2:只接收群主和管理员的消息的提醒。muteTeam
: 是否关闭此群组的消息提醒。true
表示关闭提醒;false
表示不关闭。SDK 仍会收到此群的消息, SDK 只是记录这个设置。具体根据该设置要执行的操作由第三方APP 决定。custom
: 第三方扩展字段, 开发者可以自行扩展, 建议封装成 JSON 格式字符串。
参数说明:
参数 | 类型 | 说明 |
---|---|---|
teamId | String | 群ID |
muteNotiType | String | 群消息的提醒策略,"0":开启提醒;"1":关闭消息提醒 |
muteTeam | Boolean | 是否关闭此群的消息提醒 true:关闭提醒 |
nickInTeam | String | 群昵称 |
custom | String | 第三方扩展字段, 开发者可以自行扩展, 建议封装成 JSON 格式字符串 |
done | done | 结果回调函数 |
示例代码:
nim.updateInfoInTeam({
teamId: '123',
// 此参数为可选参数
// nickInTeam: '群昵称',
// 静音群, 此参数为可选参数
// muteTeam: true,
// 第三方扩展字段
// custom: '{}'
done: updateInfoInTeamDone
});
function updateInfoInTeamDone(error, obj) {
console.log('修改自己的群属性' + (!error?'成功':'失败'), error, obj);
}
禁言群组成员
群组全体禁言
只有群主才有禁言全体成员或取消全员禁言的权限。
通过调用 muteTeamAll
方法来禁言群组全体成员或解除全体成员的禁言。
群组全员禁言分为两种模式。
- 若群组的禁言模式
muteType
为all
,那么调用该接口禁言的对象是包含群主和管理员的所有成员。 - 若群组的禁言模式
muteType
为normal
,那么调用该接口禁言的对象是全体普通成员,不包括群主和管理员。
参数说明:
参数 | 类型 | 说明 |
---|---|---|
teamId | String | 群ID |
mute | Boolean | 是否禁言全体成员。 true:表示禁言 false:表示解除禁言 |
示例代码:
nim.muteTeamAll({
teamId: '1027484',
mute: true,
done: muteTeamAllDone
})
function muteTeamAllDone (error, obj) {
console.log('禁言群' + (!error?'成功':'失败'));
}
禁言指定群成员
仅群主和管理员能禁言指定群成员。
通过调用 updateMuteStateInTeam
来修改群成员的的禁言状态。
修改群成员禁言状态后, 所有群成员都会收到群组通知消息,类型为 updateTeamMute
,该群组通知消息中包含操作者账号、被禁言的用户账号、对应群组组信息以及被禁言的成员列表。
参数说明:
参数 | 类型 | 说明 |
---|---|---|
teamId | String | 群ID |
account | String | 被禁言的用户帐号 |
mute | Boolean | 是否禁言。 true:表示禁言 false:表示解除禁言 |
done | done | 结果回调函数 |
示例代码:
nim.updateMuteStateInTeam({
teamId: '123',
account: 'a',
mute: true,
done: updateMuteStateInTeamDone
})
function updateMuteStateInTeamDone(error, obj) {
console.log('更新群成员禁言状态' + (!error?'成功':'失败'), error, obj);
}
查询群组成员
查询群组成员信息
通过调用 getTeamMembers
方法来获取群组成员。
该操作有可能只是从本地数据库读取缓存数据,也有可能会从服务器同步新的数据, 因此耗时可能会比较长。
参数说明:
参数 | 类型 | 说明 |
---|---|---|
teamId | String | 群ID |
done | done | 结果回调函数, 成功时会收到群成员列表 |
**示例代码: **
nim.getTeamMembers({
teamId: '123',
done: getTeamMembersDone
});
function getTeamMembersDone(error, obj) {
console.log(error);
console.log(obj);
console.log('获取群成员' + (!error?'成功':'失败'));
if (!error) {
// handle error
}
}
查询指定群组成员信息
通过调用 getTeamMemberByTeamIdAndAccount
方法根据群组 ID 和成员账号来获取指定群组成员信息。
该操作有可能只是从本地数据库读取缓存数据,也有可能会从服务器同步新的数据, 因此耗时可能会比较长。
参数说明:
参数 | 类型 | 说明 |
---|---|---|
teamId | String | 群ID |
account | String | 群成员账号 |
done | done | 结果回调函数,成功时会收到群成员列表 |
示例代码:
nim.getTeamMemberByTeamIdAndAccount({
teamId: '123',
account: 'abc',
done: getTeamMemberDone
});
function getTeamMemberDone(error, obj) {
console.log(error);
console.log(obj);
console.log('获取群成员' + (!error?'成功':'失败'));
if (!error) {
onTeamMember(obj);
}
}
查询本地指定群组成员信息
通过调用 getLocalTeamMembers
方法根据群组 ID 和成员账号从本地数据库查询指定群组成员信息。
参数说明:
参数 | 类型 | 说明 |
---|---|---|
teamId | String | 群ID |
accounts | String | 群成员账号列表 |
done | done | 结果回调函数,成功时会收到群成员列表 |
示例代码:
nim.getLocalTeamMembers({
teamIds: teamIds
done: getLocalTeamMembers
});
function getLocalTeamMembers(error, obj) {
console.log('获取本地群成员' + (!error?'成功':'失败'));
console.log(error);
console.log(obj);
}
查询群成员的邀请者
通过调用 getTeamMemberInvitorAccid
来查询群组成员的邀请者。
群成员入群邀请人为空表示主动入群,没有邀请人。
参数说明:
参数 | 类型 | 说明 |
---|---|---|
teamId | String | 群ID |
accounts | Array | 需要查询邀请者的群成员账号列表,一次最多查200个 当群成员数量小于等于 200 时为可选参数,不填默认查全部成员; 群成员数量大于 200 时,需要将成员列表分批多次调用查询。 |
done | done | 结果回调函数,返回数据类型为 Object,key/value 分别是群成员(accid)/邀请者(accid) |
示例代码:
nim.getTeamMemberInvitorAccid({
teamId: '123',
account: ['abc'],
done: getTeamMemberInvitorAccidDone
});
function getTeamMemberInvitorAccidDone(error, obj) {
console.log(error);
console.log(obj);
console.log('获取群成员邀请者' + (!error?'成功':'失败'));
}
查询被禁言的群成员
通过调用 getMutedTeamMembers
方法来查询被禁言的群成员。
示例代码:
jsnim.getMutedTeamMembers({
teamId: 'teamId',
done: getMutedTeamMembersDone
})
function getMutedTeamMembersDone (error, obj) {
console.log('获取群禁言成员列表' + (!error?'成功':'失败'));
}
API 参考
API |
说明 |
---|---|
addTeamManagers |
添加群组管理员 |
removeTeamManagers |
移除群组管理员 |
updateNickInTeam |
修改群组成员的昵称 |
updateInfoInTeam |
修改自己在群组中的信息 |
updateMuteStateInTeam |
修改指定群组成员禁言状态 |
muteTeamAll |
禁言群组全体成员 |
getTeamMemberInvitorAccid |
查询群组成员的邀请者 |
getTeamMembers |
查询群组成员 |
getTeamMemberByTeamIdAndAccount |
根据群组 ID 和成员账号来获取指定群组成员信息 |
getMutedTeamMembers |
查询被禁言的群组成员 |
getLocalTeamMembers |
根据群组 ID 和成员账号从本地数据库查询指定群组成员信息 |