概念解释
用户类型
在 OpenIM 系统中,用户分为三种类型:普通用户、APP 管理员和通知号。
普通用户
- 组成:
userID
、faceURL
、nickname
、ex
- 描述:普通用户通常由外部业务系统导入,代表 OpenIM 系统的标准终端用户。ex字段作为扩展字段供业务使用。
APP 管理员
- 权限:拥有超级权限
- 用途:通过 APP 管理员的身份调用 REST API 直接操作 OpenIM 系统。
- 内置管理员:OpenIM 服务器内置一个 APP 管理员,其
userID
为 imAdmin。
通知号
- 功能:APP 管理员以系统通知号的身份发送通知消息,不受好友关系和群组权限的约束。可通过REST API增加通知号,以及修改通知号昵称和头像。
- 用户体验:用户收到消息后,消息会以通知号的头像和昵称显示在会话中。
群组
在 OpenIM 系统中,群组功能包括以下几个方面:
群组类型
- 单一群组类型:当前系统仅支持一种群组类型,不区分小群或大群。
群成员限制
- 成员上限:群成员数量无限制,最高支持 100,000 名成员。
进群方式
用户可以通过以下三种方式加入群组:
- 群成员邀请:现有群成员可以邀请新成员直接加入群组。
- 发送进群申请:用户需提交申请,等待群主或管理员批准后方可加入。
- 允许所有人加群:任何用户都可以自由加入群组,无需审批。
群组角色及权限
群组内共有三种身份,权限依次递减:
- 群主
- 管理员
- 普通成员
群主
- 权限:拥有最高权限。
- 管理功能:
- 设置多个管理员,管理员之间权限相同。
- 解散群组。
- 转让群主身份给其他群成员。
- 退群前必须先转让群主身份。
- 处理进群申请。
- 管理群设置,如群公告、群名称等。
管理员
- 权限:与其他管理员权限相同,次于群主。
- 管理功能:
- 处理进群申请。
- 管理群设置,如群公告、群名称等。
- 对普通成员进行管理操作,例如踢出群成员、禁言成员。
普通成员
- 权限:拥有基本的群组使用权限。
- 功能:参与群聊,查看群公告,发送消息等。
权限管理
- 高权限身份操作:群主和管理员可以对低权限身份进行操作,如踢出群、禁言等。
- 管理员之间权限相同:管理员之间无上下级关系,彼此权限平等。
群主与管理员的管理功能
- 处理进群申请:群主和管理员可以审核并处理用户的进群申请。
- 群组设置管理:包括编辑群公告、修改群名称等。
消息和通知
消息
- 定义:消息指由用户或系统发送的实际内容,包括文字、图片、视频等多媒体形式。
- 功能:
- 传输内容:将消息内容传送至接收者。
- 展示与显示:在接收端清晰展示消息内容,确保用户能够理解和查看。
通知
- 定义:通知指由用户或系统触发的行为,以通知形式发送给相关方。
- 用途:
- 系统同步:用于同步系统状态或操作,如群成员同步、好友列表同步等。
- 信息展示:用于向用户展示重要事件或操作结果,例如进群通知、系统公告等。
消息推送
在线推送
- 定义:当用户在线时,OpenIM 优先使用自己的长连接通道进行消息推送,此时称为在线推送。
- 特点:
- 实时性强:消息能立即传达给接收者。
- 稳定性:依赖长连接通道,确保消息传输的可靠性。
离线推送
- 定义:当用户不在线时,或者 APP 被杀死,此时 OpenIM 长连接无法推送消息,必须借用第三方推送服务。
- 实现方式:
- 厂商推送:利用如 APNs(苹果推送通知服务)等厂商的推送服务进行消息传递。
- 中国境内:一般使用个推服务。
- 境外:一般使用Firebase服务。
- 特点:
- 覆盖广:适用于各种网络环境,确保消息能在用户恢复上线时被接收。
消息存储类型
本地消息
- 除了 jssdk 外,OpenIM 的消息会根据需要进行拉取加载。对于客户端已拉取的消息,系统会将其存储在本地,统称为“本地消息” 。
多端同步消息
- 用户通常会使用多种设备,当用户从设备 A 发送消息时,该消息会同步到设备 B,这类消息称为“多端同步消息” 。
离线消息
- 用户在离线期间接收到的消息,系统会在用户重新登录后根据需要从服务器同步并加载,这些消息称为“离线消息” 。
漫游消息
- 当用户更换设备或重新安装应用时,系统会拉取并同步这些历史消息,这些消息被称为“漫游消息” 。
对象存储
- 对象存储(Object Storage)是一种用于存储海量非结构化数据的存储架构,它通过将数据存储为独立的“对象”来管理信息,每个对象包含数据本身、可扩展的元数据以及一个全局唯一的标识符(Key)。
- 发送文件、图片、视频类型的消息一般先上传到对象存储后生成URL,然后再发送给对方。 整个流程是IMSDK内部完成的,您无需关心。但需您配置minio、oss、cos、s3等其中一种对象存储服务。