====== 环信超级社区概述 ======
环信超级社区(Circle)是一款基于环信 IM 打造的类 Discord 实时社区应用场景方案,支持社区(Server)、频道(Channel) 和子区(Thread) 三层结构。一个 App 下可以有多个社区,同时支持陌生人/好友单聊。用户可创建和管理自己的社区,在社区中设置和管理频道将一个话题下的子话题进行分区,在频道中根据感兴趣的某条消息发起子区讨论,实现万人实时群聊,满足超大规模用户的顺畅沟通需求。
===== 社区、频道和子区介绍 =====
{{https://docs-im.easemob.com/_media/ccim/circle/circl_product_overview.png?w=1000&tok=950465| img}}
==== 社区、频道和子区的基本概念与关系 ====
社区(Server)是一群有着共同兴趣爱好的人的专属天地,也可以是同学朋友的社交圈子。社区是环信超级社区三层基础架构的最上层,各种消息事件均发生在社区内。社区分为公开社区和私密社区。对于公开社区,任何用户均可查询社区列表,可自由加入或退出社区,无需审批;对于私密社区,用户无法查询社区列表,只能通过社区成员邀请加入社区,无法申请加入社区。
频道(Channel)是一个社区下不同子话题的讨论分区,因此一个社区下可以有多个频道。社区下有一个默认频道用于承载各种系统通知。从可见性角度看,频道社区分为公开和私密频道;从功能角度看,频道分为文字频道和语聊频道。社区创建者可以根据自己需求创建频道。此外,多个频道还可以归入一个频道分组,方便管理。
**超级社区中的频道基于即时通讯 IM 的群组或聊天室(频道 ID 为群组 ID 或聊天室 ID)创建,删除群组或聊天室时需注意以下几点:**
**1. 在环信控制台或者通过 RESTful API 或者通过客户端删除群组或聊天室、群组或聊天室加人、踢人等操作时请谨慎操作,需确保操作的群组或者聊天室不是超级社区使用的。** \\ **2. 如果将超级社区使用的频道对应的群组或者聊天室删除,会出现数据不一致情况,导致用户加入不了社区、频道、在频道内发不了消息等情况发生。** \\ **3. 在清理群组或者聊天室数据时,需先确认要删除的群组 ID 或聊天室 ID 与超级社区的频道 ID 是否一致。你可以调用[[https://docs-im.easemob.com/ccim/circle/android/channel#获取频道详情|获取频道详情 API]] 确认要删除的群组或聊天室是否为超级社区的频道。如果是,请不要进行删除。** \\ **4. 如果需要清理超级社区数据,调用[[https://docs-im.easemob.com/ccim/circle/android/server#解散社区|删除社区]]和[[https://docs-im.easemob.com/ccim/circle/android/channel#解散频道|删除频道]]等 API。**
子区(Thread)是一个基于频道中某一条消息展开的讨论,用户可以某条消息为中心,与其他对此条消息感兴趣的朋友一起聚焦沟通。
通过 Server-Channel-Thread 三层架构,每个用户都可以找到属于自己的兴趣社区,并在其中与自己趣味相投的好友建立圈子。既保证同一个社区中的成员管理秩序,用户关系不会被打散,同时为每个用户提供构建专属于自己和好友的圈子,满足多维度的沟通需求。
===== 限制条件 =====
* 每个 app 下的社区数量以及每个社区内的成员数均无限制。
* 单个用户最多可创建 100 个社区。单个用户默认最多可加入 100 个社区。如需调整该阈值,请联系商务。
* 每个社区最多可添加 10 个标签。\\
* 每个社区下最多可以创建 50 个频道分组。每个频道分组下最多可包含 100 个频道。如需调整该阈值,请联系商务。
* 默认情况下,每个社区的默认频道最多可包含 2000 个用户。如需调整该阈值,请联系商务。
* 每个社区下可创建的频道无上限。用户可加入的频道数量无上限。频道的最大成员数量取决于频道模式:
* 对于文字频道,单个频道的最大成员数量的范围为 [1,2000]。
* 对于语聊频道,单个频道的最大成员数量的范围为 [1,20],默认值为 ''%%8%%''。
* 每条消息只能创建一条子区。每个频道支持的子区数量无限制。
===== 社区管理 =====
==== 社区角色类型及权限 ====
社区的成员包括社区所有者(Server Owner)、管理员(Server Moderator)和普通成员。
^社区成员角色 ^描述 ^管理权限 ^
|社区所有者 |社区中权限最高的管理者 |社区所有者拥有社区、频道分组和频道的创建和所有管理权限:
- 创建社区和管理社区及社区成员,例如获取社区信息、修改社区信息、解散社区以及设置和移除管理员等。
- 管理频道分组,例如创建频道分组、获取社区下的频道分组列表、修改频道分组名称以及删除频道分组等。
- 管理频道和频道成员,例如创建频道、获取频道详情、修改频道信息、解散频道以及禁言和解除禁言频道内的成员等。 |
|管理员 |社区管理员 |拥有社区和频道的查看和管理权限以及对社区和频道中的普通成员的管理权限。 |
|普通成员 |社区中普通成员 |社区的普通成员可以在频道和子区中收发和查看消息。 |
* 每个社区只有一个社区所有者,该所有者是社区下所有频道和频道分组的所有者。
* 社区所有者可单独设置特定用户为社区管理员。
* 社区管理员,从权限角度可以理解为社区下所有频道的管理员。
==== 社区属性管理 ====
社区属性包括以下七种:
* 社区名称,不超过 50 个字符;
* 社区类型,即公开或私密社区;
* 社区描述,不超过 500 个字符;
* 社区头像 URL,不能超过 500 个字符;
* 社区背景 URL,不能超过 500 个字符;
* 社区标签,不能超过 20 个字符;
* 社区自定义字段,不超过 500 个字符。
==== 社区管理操作 ====
^功能 ^描述 ^
|创建社区 |每个用户默认最多可创建 100 个社区,如需调整该阈值,请联系商务。 |
|修改社区信息 |社区所有者和管理员可修改社区基本信息。 |
|解散社区 |解散社区需要社区所有者权限。
解散社区后所有成员将收到社区解散的回调信息。 |
|添加社区标签 |社区所有者和管理员可以给社区增加标签,非社区内用户可以通过搜索标签找到社区。每个社区最多可添加 10 个标签。 |
|移除社区标签 |社区所有者和管理员可以移除社区已有标签。 |
|获取社区标签列表 |社区成员可获取社区标签列表。 |
|获取社区详情 |用户可以获取社区的详情。 |
|获取已加入社区 |获取用户已加入的社区列表。 |
|搜索公开社区 |社区成员可以根据社区名称或标签名称搜索公开社区。 |
|分页获取社区成员列表 |分页获取指定社区中的成员列表。 |
==== 社区的成员管理 ====
^功能 ^描述 ^
|加入社区 |社区分为公开和私密社区。
- 对于公开社区,用户可以通过搜索社区名称和标签的方式申请加入社区,或者由社区内成员邀请加入。
- 对于私密社区,只能通过社区内成员邀请加入。用户可以选择同意或拒绝加入社区。 |
|退出社区 |社区所有者不支持退出社区操作,只能解散社区。
退出社区分为主动退出和被动退出,被动退出即为被社区所有者或管理员踢出社区。社区所有者和管理员可将普通用户踢出社区,管理员只能被社区所有者踢出社区。 |
|查询当前用户是否在社区内 |可判断指定用户是否已经加入了指定社区。 |
|修改社区中成员角色 |社区所有者可以将管理员权限赋予社区中普通用户,或移除管理员权限将其变为普通用户。 |
|查询当前用户在社区内角色 |社区内成员可以获取社区内用户的角色。 |
===== 频道 =====
社区所有者可创建频道,并将多个频道归为同一频道分组。
频道的划分如下:
* 从可见性角度,频道分为公开频道和私密频道。
公开频道对社区中所有用户可见;私密频道只对社区所有者、管理员(Moderator)和被邀请进私密频道的用户可见。
* 从功能角度,频道可分为文字频道和语聊频道。
文字频道实现文字消息和图片消息互动,语聊频道实现语音聊天。
==== 频道属性管理 ====
频道的属性包括以下七种:
* 频道名称,不超过 50 个字符;
* 频道描述,不超过 500 个字符;
* 频道类型,包括公开和私密频道;
* 频道模式,包括文字频道和语聊频道;
* 频道大小,文字频道最多可容纳 2000 人,而语聊频道最多可容纳 20 人;
* 频道自定义字段,不超过 500 个字符;
* 频道分组名称,不超过 50 个字符。
==== 频道管理操作 ====
^功能 ^描述 ^
|创建频道 |社区所有者可以在社区中创建公开或私密频道。 |
|修改频道信息 |社区所有者和管理员可以修改频道的属性。 |
|解散频道 |社区所有者可以解散社区中的频道。 |
|获取频道详情 |社区成员可获取频道的详情。 |
|获取社区的公开频道列表 |社区成员可以获取社区下的所有公开频道的列表。 |
|获取社区的私密频道列表 |社区成员可以获取社区下的所有私密频道的列表。 |
|获取社区中用户加入的频道列表 |社区成员可以获取自己已经加入的频道。 |
|获取频道的成员列表 |频道成员可以获取该频道下的成员列表。 |
|创建频道分组 |社区所有者可以创建频道分组。 |
|修改频道分组名称 |社区所有者可修改频道分组名称。 |
|获取社区下的频道分组列表 |社区成员可以获取社区下的频道分组列表。 |
|删除频道分组 |社区所有者可以删除频道分组。 |
|分页获取频道分组下的公开频道列表 |社区成员可以分页获取频道分组下公开的频道列表。 |
|分页获取频道分组下的私密频道列表 |社区成员可以分页获取频道分组下的私密频道列表。 |
|更换频道所属的频道分组 |社区所有者和管理员可以将指定的频道从一个频道分组转移至另一个频道分组中。 |
==== 频道的成员管理 ====
=== 频道的成员角色权限 ===
用户在频道中的角色与其社区中的角色相同,即用户在社区的角色会被继承到频道。
=== 频道的成员管理操作 ===
^功能 ^描述 ^
|加入频道 |频道分为公开和私密频道。
- 对于公开频道,用户可以获取公开频道列表,然后申请加入频道,或者由频道成员邀请加入。
- 对于私密频道,只能通过频道成员邀请加入。用户可以选择同意或拒绝加入频道。 |
|退出频道 |退出频道分为主动退出和被动退出,被动退出即被社区所有者或管理员踢出频道。 |
|查询用户是否在频道中 |查询指定用户是否在指定频道中。 |
|频道禁言/解除禁言 |社区所有者和社区管理员可以将频道成员加入或移出禁言列表,禁言列表中的成员无法发送频道消息,可以接收频道中的消息。 |
|获取频道下的禁言列表 |社区所有者和社区管理员可以获取频道下被禁言用户的列表。 |
===== 子区 =====
==== 子区属性管理 ====
子区名称,不超过 50 个字符。
==== 子区管理操作 ====
^功能 ^描述 ^
|创建子区 |频道成员可以在频道中创建子区。 |
|加入子区 |频道成员可以加入频道下的子区。 |
|退出子区 |子区成员可以主动退出或被移出自己加入的子区。 |
|删除子区 |社区所有者可以删除该频道中的子区。 |
|获取子区详情 |频道成员可以获取子区的详情。 |
|获取频道下创建的子区列表 |频道成员可以获取在指定频道下创建的子区列表。 |
|获取频道下加入的子区列表 |频道成员可以获取频道下加入的子区。 |
|获取频道的子区列表 |频道成员获取频道的所有子区的列表。 |
|修改子区名称 |社区所有者、社区管理员和子区的创建者可以修改子区的名称。 |
===== 参考信息 =====
==== 用户 ====
^功能 ^描述 ^
|查询用户是否存在 |查询 App Key 下用户是否存在。 |
|获取用户在离线状态 |用户可以获取在离线状态。 |
|添加好友 |用户可以添加好友。 |
|删除好友 |用户可以删除好友。 |
==== 消息管理 ====
消息相关功能可参考官网 [[https://docs-im-beta.easemob.com/document/android/message_overview.html|消息管理]] 文档,目前不支持已读或未读回执。
^功能 ^描述 ^
|发送消息 |用户可以给指定用户、频道或子区发消息/图片/文件。 |
|撤回消息 |用户可以撤回自己发送的消息。 |
|添加 Reaction |用户可以给消息添加 Reaction。 |
|获取 Reaction |用户可以获取 Reaction。 |
|删除 Reaction |用户可以删除自己添加的 Reaction。 |
|获取 Emoji |用户可以获取 Emoji。 |
|获取 Emoji 类 |用户可以获取 Emoji 类。 |