群组概述
群聊是即时通讯类应用中常见的多人通讯方式,一般包含两个及以上的用户。融云的群组业务支持丰富的群组成员管理、禁言管理等特性,支持离线消息推送和历史消息记录漫游,可用于兴趣群、办公群、客服服务沟通等。IMKit 提供开箱即用的群聊会话 UI 组件。
服务配置
客户端 SDK 默认支持群组业务,不需要申请开通。部分基础功能与增值服务可以在控制台 IM 服务的服务购买和服务配置页面进行开通和配置。
- 信息托管服务已默认开通。IMKit 5.12.0 版本及之后支持切换为用户信息托管方式,用于托管用户、群组和群成员资料,并使用对应的群组管理能力。
- App Key 下可创建的群组数量无限制。单个用户可加入的群组数量无限制。
- 群组有容量上限,默认群组成员数量上限为 3000 人,可联系客服修改。
- 默认情况下,App Key 未开通单群聊消息云端存储服务。您可以在控制台开通单群聊消息云端存储服务。如果是生产环境的 App Key,仅 IM 旗舰版、IM 尊享版可开通该服务。
- 默认情况下,用户只能查看他们加入群组后的群聊消息。开启新用户获取加入群组前历史消息服务后,新入群用户可以获取他们加入群组之前的群聊历史消息 。。
客户端 SDK 使用须知
- IMKit 默认使用用户信息提供者方式展示用户、群组和群成员信息。该方式下,客户端 SDK 不提供创建、解散、加入、退出等群组管理 API。App 需要在自己的服务端维护群组业务逻辑,并由 App 服务端调用融云服务端 API 完成群组管理操作。
- 使用用户信息托管方式后,融云会维护托管的用户、群组和群成员资料,并提供群组管理能力。IMKit 提供对应的信息托管页面,IMLib 和融云服务端 API 提供群组创建、资料设置、成员管理、群管理员、群主转让等接口。使用旧版非托管接口创建的群组,需要先调用群组托管导入功能(托管),设置群主和群权限后,才能使用托管群组接口。
- 如果继续使用用户信息提供者方式,融云只负责将消息传达给群组中的所有用户,不维护群组成员的资料(头像、名称、群成员名片等)。App 需要自行在业务服务器上维护相关数据,并实现 IMKit 的相关接口,向 IMKit 提供数据。参见下方文档:
群组管理功能
群组 管理能力取决于 App 是否使用信息托管功能。未使用信息托管时,群主、群管理员、群公告、邀请入群、群号搜索等业务逻辑需要由 App 自行实现。使用信息托管后,可以使用 IMKit 的信息托管页面、IMLib 托管接口和信息托管群组服务端 API 管理群组。
基础群组 Server API
下表列出的接口用于维护群组关系和推送所需的基础群组信息,不托管群组资料和群成员资料。
| 服务端 API | 功能描述 |
|---|---|
| 创建群组、解散群组 | 提供创建者用户 ID、群组 ID、和群名称,向融云服务端申请建群。如解散群组,则群成员关系不复存在。 |
| 加入群组、退出群组 | 加入群组后,默认可查看入群以后产生的新消息。退出群组后,不再接收该群的新消息。 |
| 刷新群组信息 | 修改在融云推送服务中使用的群组信息。 |
| 查询群组成员 | 查询指定群组所有成员的用户 ID 信息。 |
| 查询用户所在群组 | 根据用户 ID 查询该用户加入的所有群组,返回群组 ID 及群组名称。融云不存储群组资料信息,群组资料及群成员信息需要开发者在应用服务器自行维护,如应用服务端维护的用户群组关系有缺 失时,可通过此接口来核对校验。 |
| 同步用户所在群组 | 向融云服务端同步指定用户当前所加入的所有群组,防止应用中的用户群组信息与融云服务端的用户所属群信息不一致。如果在集成融云服务前 App Server 上已有群组及成员数据,第一次连接融云服务器时,可使用此接口向融云同步已有的用户与群组对应关系。 |
| 禁言指定群成员 | 在指定的单个群组中或全部群组中,禁言一个或多个用户。被禁言用户可以接收查看群组中其他用户消息,但不能通过客户端 SDK 发送消息。 |
| 设置群组全体禁言 | 将群组全体成员禁言。被禁言群组的所有成员均不能发送消息,需要某些用户可以发言时,可将此用户加入到群禁言用户白名单中。 |
| 加入群组全体禁言白名单 | 群组被整体禁言后,禁言白名单中用户可以发送群消息。 |
信息托管群组管理
使用信息托管功能后,可以使用托管群组管理能力。IMKit 信息托管页面从 5.12.0 版本开始支持,群管理和群管理员页面从 5.12.2 版本开始支持。具体版本要求以对应页面说明为准。
| 功能 | IMKit 客户端能力 | 服务端 API |
|---|---|---|
| 创建群组 | 群组页面(托管) | 创建群组(托管) |
| 解散群组 | 群组页面(托管) | 解散群组(托管) |
| 设置与查询群组资料 | 用户信息托管方式、群组页面(托管) | 设置群组资料(托管)、批量获取群组资料(托管) |
| 加入、退出、踢出群组 | 群组页面(托管) | 加入群组(托管)、退出群组(托管)、踢出群组(托管)、将指定用户踢出所有群组(托管) |
| 群主管理与群管理员管理 | 群管理页面、群管理员页面 | 转让群组(托管)、设置群管理员(托管)、移除群管理员(托管) |
| 群成员资料与群成员列表 | 群组页面(托管) | 分页获取群成员信息(托管)、获取指定群成员信息(托管)、设置群成员资料(托管) |
| 群备注名与特别关注 | 用户信息托管方式、特别关注群成员页面 | 设置群名称备注名(托管)、设置特别关注群成员(托管) |
| 查询群组 | 我的群组页面 | 分页查询应用下群组(托管)、分页查询用户加入的群组(托管) |
| 导入已有群组为托管群组 | 不提供客户端页面 | 群组托管导入功能(托管) |