Flutter

群成员管理

更新时间: 2024/03/07 11:28:01

网易云信 NIM SDK 支持用户查询、添加、移除群组成员,管理成员角色等功能,拥有完善的成员权限体系及管理功能,群组内所有用户根据权限分为群主、管理员、以及普通成员。

技术原理

网易云信 NIM SDK 的 TeamService 提供管理群组成员的相关方法,帮助您快速实现和使用群组的成员权限体系及管理功能。

群组中有三种角色,群主(owner),群组管理员(manager)以及群组普通成员(normal),具体请参见 TeamMemberType

  • 群主默认为群组创建者,后续可通过 transferTeam 转让群主身份。
  • 群组管理员由群主分配,群主通过 addManagers 添加群组管理员。
  • 用户进入群组后,默认为群组的普通成员,后续可联系群主修改角色。
  • TeamMemberType 中还包含 apply 类型,表示待审核的申请入群用户。

前提条件

管理群组管理员

添加群组管理员

只有群主才拥有添加群组管理员的权限。

通过调用addManagers 方法添加群组管理员。

群主添加管理员后,所有群成员会收到群组通知消息(消息类型为 NIMMessageType.notification),触发事件为addTeamManager

参数说明:

参数 说明
teamId 群ID
accounts 待添加的管理员账号列表

示例代码:

// teamId 操作的群id, accountList为待提升为管理员的用户帐号列表
   final result = await NimCore.instance.teamService.addManagers(
          'teamId',
          ['accounts'],
        );

撤销群组管理员

只有群主拥有撤销群组管理员的权限。

通过调用 removeManagers 方法来撤销群组管理员。

群主撤销群管理员后,其身份变为普通成员。所有群成员会收到群组通知消息(消息类型为 NIMMessageType.notification),触发事件为removeTeamManager

参数说明:

参数 说明
teamId 群ID
managers 待撤销的管理员账号列表

示例代码:

  final result = await NimCore.instance.teamService.removeManagers(
          'teamId',
          ['managers'],
        );

修改群成员信息

修改群组成员的群昵称

只有群主才有修改群组成员的群昵称的权限。

通过调用 updateMemberNick 来修改群组成员的群昵称。

参数说明:

参数 说明
teamId 群ID
account 需要修改群昵称的用户账号
nick 群昵称

示例代码:

  final result = await NimCore.instance.teamService.updateMemberNick(
      'teamId',
      'account',
      'nick',
    );

修改自身扩展字段

通过调用 updateMyMemberExtension 方法修改群组中自己的扩展字段。

参数说明:

参数 说明
teamId 群ID
extension 新的扩展字段(自定义属性)

示例代码:

  final result = await NimCore.instance.teamService.updateMyMemberExtension(
      'teamId',
      {'key':'value'},
    );

禁言群组成员

群组全员禁言

只有群主才有禁言全体成员或取消全员禁言的权限。

通过调用 muteAllTeamMember 方法来禁言群组全体成员或解除全体成员的禁言。

群组全员禁言分为两种模式。

  • 若群组的禁言模式 muteModemuteALL,那么调用该接口禁言的对象是包含群主和管理员的所有成员。
  • 若群组的禁言模式 muteModemuteNormal,那么调用该接口禁言的对象是全体普通成员,不包括群主和管理员。

参数说明:

参数 说明
teamId 群ID
mute 是否禁言全体成员
true:表示禁言
false:表示解除禁言

示例代码:

final result = await NimCore.instance.teamService.muteAllTeamMember(
          'teamId',
          true,
        );

禁言指定成员

只有群主才能禁言指定成员。

通过调用 muteTeamMember 来禁言指定群组成员或解除群成员的禁言。

修改群成员禁言状态后, 所有群成员会收到群组通知消息(消息类型为 NIMMessageType.notification),触发事件为muteTeamMember

参数说明:

参数 说明
teamId 群ID
account 被禁言/被解除禁言的用户帐号
mute 是否禁言
true:表示禁言
false:表示解除禁言

示例代码:

// 以禁言为例
final result = await NimCore.instance.teamService.muteTeamMember(
          'teamId',
          'manager',
          true,
        );

查询群组成员

  • 由于群组成员数据较大,且除了进入群组成员列表界面外,其他场景不需要群组成员列表的数据,因此 SDK 不会在登录时同步群组成员数据,而是按照按需获取的原则,当上层主动调用获取指定群的群组成员列表时,才判断是否需要同步。

  • 群成员信息 SDK 本地存储说明: 当自己退群、或者被移出群时,本地数据库会继续保留这个群成员信息,只是设置了无效标记,此时依然可以通过 queryTeamMember 查询该群成员信息,只是 isInTeam 将返回 false 。

查询群组所有成员信息

通过调用 queryMemberList 方法来获取群组所有成员的信息。

该操作有可能只是从本地数据库读取缓存数据,也有可能会从服务器同步新的数据, 因此耗时可能会比较长。

示例代码:

 final result = await NimCore.instance.teamService.queryMemberList(
          'teamId',
        );

查询指定群组成员信息

通过异步调用 queryTeamMember来获取群组指定成员的信息。

如果本地群成员信息已过期,SDK 会去服务器获取最新信息。

参数说明:

参数 说明
teamId 群ID
account 需要查询的群成员账号

示例代码:

 final result = await NimCore.instance.teamService.queryTeamMember(
          'teamId',
          'account',
        );

查询群成员的邀请者

通过调用 getMemberInvitor 来查询群组成员的邀请者。

群成员入群邀请人为空表示主动入群,没有邀请人。

参数说明:

参数 说明
tid 群ID
accids 需要查询邀请者的群成员账号列表,一次最多查询 200 个

示例代码:

// accids表示查询的成员列表
   final result = await NimCore.instance.teamService.getMemberInvitor(
      'teamId',
      ['accids'],
    );

查询被禁言的群成员

通过调用 queryMutedTeamMembers 方法来查询被禁言的群成员。

  • 该接口只返回调用 muteTeamMember 方法禁言的用户列表。
  • 若需要查询群整体禁言情况,可调用 NIMTeam#muteModeNIMTeam#isAllMute 来实现。
  • 查询某用户是否被 muteTeamMember 方法禁言过,可通过 NIMTeamMember - isMute 来获取。
  • 当被整体禁言后,但未被 muteTeamMember 方法禁言过,则 NIMTeamMember - isMute仍为 false。

示例代码:

// members表示被禁言的成员列表
 final result = await NimCore.instance.teamService.queryMutedTeamMembers(
      'teamId',
    );

API 参考

API
说明
addManagers 添加群组管理员
removeManagers 撤销群组管理员
updateMemberNick 修改群组成员的昵称
updateMyMemberExtension 修改群组中自己的扩展字段
muteAllTeamMember 禁言群组全体成员
muteTeamMember 禁言群组成员
queryMemberList 查询群组所有成员
queryTeamMember 查询群组指定成员的信息
getMemberInvitor 查询群组成员的邀请者
queryMutedTeamMembers 查询被禁言的群组成员
此文档是否对你有帮助?
有帮助
去反馈
  • 技术原理
  • 前提条件
  • 管理群组管理员
  • 添加群组管理员
  • 撤销群组管理员
  • 修改群成员信息
  • 修改群组成员的群昵称
  • 修改自身扩展字段
  • 禁言群组成员
  • 群组全员禁言
  • 禁言指定成员
  • 查询群组成员
  • 查询群组所有成员信息
  • 查询指定群组成员信息
  • 查询群成员的邀请者
  • 查询被禁言的群成员
  • API 参考