diff --git a/docs/.vuepress/sidebar/index.ts b/docs/.vuepress/sidebar/index.ts index 4d6a3848b..aebb7ea8e 100644 --- a/docs/.vuepress/sidebar/index.ts +++ b/docs/.vuepress/sidebar/index.ts @@ -28,7 +28,13 @@ export const zhSidebar = sidebar({ children: [ { text: "产品概述", link: "introduction.html" }, { text: "应用场景", link: "application_scenario.html" }, - { text: "功能介绍", link: "product_function.html" }, + { text: "功能介绍", + collapsible: true, + children: [ + { text: "功能列表", link: "product_function.html" }, + { text: "功能详情", link: "conversation_function.html" }, + ], + }, { text: "账号系统", collapsible: true, children: [ @@ -43,15 +49,18 @@ export const zhSidebar = sidebar({ { text: "用户关系", link: "product_user_relationship.html" }, ], }, - { text: "消息", + { text: "消息管理", collapsible: true, children: [ - { text: "消息概述", link: "product_message_overview.html" }, + { text: "单聊消息", link: "message_single_chat.html" }, + { text: "群组消息", link: "message_group.html" }, + { text: "聊天室消息", link: "message_chatroom.html" }, + { text: "消息存储", link: "message_store.html" }, { text: "消息格式", link: "product_message_format.html" }, ], }, { text: "离线推送", link: "product_offline_push_overview.html" }, - { text: "群组", + { text: "群组管理", collapsible: true, children: [ { text: "群组概述", link: "product_group_overview.html" }, @@ -75,10 +84,12 @@ export const zhSidebar = sidebar({ }, ], }, - { text: "计费说明", + { text: "购买指南", collapsible: true, children: [ - { text: "计费说明", link: "pricing.html"}, + { text: "计费策略", link: "pricing_policy.html"}, + { text: "套餐包功能对比", link: "product_package_feature.html"}, + { text: "购买指引", link: "pricing_method.html" }, ], }, { diff --git a/docs/product/application_scenario.md b/docs/product/application_scenario.md index 96fd1fabf..5821b3e27 100644 --- a/docs/product/application_scenario.md +++ b/docs/product/application_scenario.md @@ -1,34 +1,53 @@ # 适用场景 -环信适用于端到端实时消息沟通的场景,包括聊天、通知、直播、企业协作、客服沟通以及线上问诊等。 +// TODO:应用场景已经按照腾讯云的添加,请 Review -## 应用内聊天 +环信适用于端到端实时消息沟通的场景,包括社交沟通、互动直播、企业协作、客服沟通、物联网通信、在线教育、系统通知、游戏社交等。 -应用内聊天包括陌生人社交、相亲等: - - 支持丰富的消息类型、好友关系管理; - - 支持群管理能力、群公告设置、群角色设置等。 - -## 应用内通知 +## 社交沟通 - - 支持广播消息、自定义通知消息等; - - 支持用户管理,包括储存用户信息、用户封禁等。 - -## 视频/语音直播 +即时通讯 IM 为社交场景提供全链路通信解决方案。支持单聊、群聊、弹幕等多样化社交模式,覆盖文字、图片、语音、短视频等全媒体消息格式,实现社交场景中音视频通话的无缝衔接,显著提升用户留存与互动频次。 +- 典型场景:应用内聊天包括陌生人社交、相亲;兴趣社区/圈子 +- 核心能力:消息云端存储、好友关系管理、群管理能力、多端同步 + +## 互动直播 + +即时通信 IM 提供无上限人数的聊天室能力,可承载亿级消息并发。支持弹幕、虚拟礼物、点赞打赏等互动消息类型,助力构建高粘性直播社区。 +- 典型场景:电商直播、赛事直播、秀场互动 +- 核心功能:聊天室、语聊房 - - 支持聊天室管理能力; - - 支持丰富类型的聊天室消息,包括弹幕、红包、礼物等。 - ## 企业协作 - - 支持用户管理,设置企业组织架构、好友关系管理; - - 支持群管理能力、群公告设置、群附件发送、群角色设置等。 - -## 买家卖家沟通 +即时通信 IM 为企业打造高效的协同办公平台,支持跨平台协作。 +- 典型场景:跨区域团队协作、项目群组管理 +- 核心功能:好友关系管理、群组管理、群组公告/角色设置、群组附件发送 + +## 在线客服 + +基于即时通信 IM 构建客服中枢,满足买家和卖家多场景沟通需求,支持订单通知、问候语设置、自定义消息发送,提升服务效率。 +- 典型场景:在线客服,热线咨询 +- 核心功能:智能路由分配、多轮对话管理、服务质量监控 + +## 物联网通信 + +构建物联网络通信中枢,支持跨平台设备消息互通。 +- 典型场景:智能家居控制、工业设备监测 +- 核心功能:全消息类型、多设备同步 + +## 在线教育 + +即时通讯 IM 支持万人直播课互动与精品小班课场景。通过集成电子白板协同、课堂实时录播、随堂测试等教学工具,提供从课前提醒到课后作业的全流程解决方案。 +- 典型场景:在线课堂、企业内训 +- 核心功能:聊天室/群组管理、自定义消息 + +## 系统消息通知 + +构建精准触达的消息推送体系,支持多通道智能路由选择,通过用户画像实现个性化消息推送。 +- 典型场景:订单状态提醒、系统告警通知 +- 核心功能:广播消息、推送 - - 支持订单通知、问候语设置、自定义消息发送; - - 支持卖家内部管理、公告设置、成员管理等。 - -## 线上问诊 +## 游戏社交 - - 支持丰富的消息类型,图文病情描述、语音消息等; - - 支持用户信息存储、用户身份管理等。 \ No newline at end of file +即时通讯 IM 为游戏生态定制社交解决方案,提供大厅/战队/世界频道等多种社交场景,支持文字、语音、表情、视频等多种消息类型,可通过自定义消息实现语音开黑、道具交易、成就分享等特色功能。此外,我们支持全球多节点部署,为您提供全球化即时通讯能力。 +- 典型场景:竞技游戏战队管理、大厅群聊 +- 核心功能:聊天室/群组管理、全类型消息 \ No newline at end of file diff --git a/docs/product/conversation_function.md b/docs/product/conversation_function.md new file mode 100644 index 000000000..b0ee6e66a --- /dev/null +++ b/docs/product/conversation_function.md @@ -0,0 +1,408 @@ +# 功能详情 + +环信即时通讯 MI 支持单聊、群聊、聊天室和超级社区会话。本文展示各类会话的主要功能、用户管理功能、离线推送和内容审核功能。 + +// TODO:为了方便用户查看每类会话的所有功能,列明了四类会话。有必要吗? + +// TODO:超级社区会话有必要吗? + +// TODO:用户关系放在了单聊这里,合适吗? + +## 单聊会话 + +单聊会话指两个用户一对一聊天。默认情况下,环信即时通讯 IM 支持两个陌生人进行聊天,即发送消息时不会验证是否为好友。即时通讯 IM 会建立会话,用户离线时会收到推送通知(若集成了第三方离线推送服务)。 + +### 消息相关 + +| 功能 | 描述 | +| :------------- | :---------------------- | +| 发送和接收消息 | 发送和接收各类消息,包括文本、图片、音频、视频、文件消息、位置消息、命令消息、自定义消息以及合并消息。 | +| 本地存储 | 接收的消息存储在本地。 | +| 历史消息 | 环信服务器可存储消息。消息存储时间与你的产品套餐包相关,详见[产品价格](https://www.easemob.com/pricing/im)。 | +| 离线消息推送 |
- 用户离线时,可向消息接收方发送推送通知。
- 支持离线消息存储,默认为 7 天。 | +| 搜索消息 | 按照关键字搜索本地会话中的各类消息。 | +| 消息撤回 | 撤回发送成功的消息。默认可撤回发出 2 分钟内的消息。你可以在环信即时通讯云控制台设置消息撤回时长,该时长不超过 7 天。 | +| 消息回执 | 消息送达回执和消息已读回执。 | +| 修改消息 | 编辑发送成功的消息。 | +| 表情回复 | 对消息添加、删除表情。 | +| 导入和插入消息 | 在本地导入和插入消息。 | +| 删除消息 | 单向删除服务端和本地的历史消息、清除聊天记录。 | +| 置顶消息 | 置顶、取消置顶消息和获取置顶消息。 | +| 翻译消息 | 对文本消息按需翻译和自动翻译 | +| 只投在线用户 | 只将消息投递给在线用户。 | +| 消息审核(举报) | 举报违规消息。 | +| 获取消息流量统计 | 本地消息的流量统计 | + +### 会话相关 + +| 功能 | 描述 | +| :-------------- | :----- | +| 会话列表 | 从服务器或本地获取会话列表。 | +| 会话免打扰 | 可设置指定单聊会话,收到新消息后是否提醒。 | +| 会话已读回执 | 接收方阅读会话中的所有消息后向服务器发送会话已读回执。 | +| 会话未读数 | 获取和清零单聊会话的未读消息数。 | +| 会话置顶 | 将单聊会话固定在会话列表的顶部。 | +| 会话标记 | 对单聊会话添加标记。 | +| 会话删除 | 删除单聊会话。 | + +### 用户关系 + +环信即时通信 IM 默认支持陌生人之间发送单聊消息,即无需添加好友即可聊天。若仅允许好友之间发送单聊消息,你需要在[环信即时通讯云控制台](https://console.easemob.com/user/login)[开启好友关系检查](/product/enable_and_configure_IM.html#好友关系检查)。 + +| 功能 | 描述 | +| :-------------- | :----- | +| 添加好友 | 发送、接收和处理好友请求。 | +| 移除好友 | 移除好友。 | +| 设置好友备注 | 设置单个好友的备注。 | +| 获取好友列表 | 从服务端或本地获取好友列表。 | +| 单聊黑名单 | 若不希望收到特定用户的消息,可将其加入到黑名单。可以将任何用户加入黑名单,不论该用户与你是否是好友关系。用户被加入黑名单后,仍在好友列表上显示,无法向你发送消息,也无法发送好友申请。 | + +## 群组会话 + +群组是支持多人沟通的即时通讯系统,成员关系相对稳定。所有群成员可以收到群中的消息,可以在群中发送消息。群成员离线时可以收到推送消息。群组成员支持多种角色:群主、群管理员和普通成员。群组提供丰富的管理能力,如群组禁言、群公告和群文件等。 + +### 消息相关 + +| 功能 | 描述 | +| :------------- | :---------------------- | +| 发送和接收消息 | 发送和接收各类消息,包括文本、图片、音频、视频、文件消息、位置消息、命令消息、自定义消息以及合并消息。 | +| 本地存储 | 接收的消息存储在本地。 | +| 历史消息 | 环信服务器可存储消息。消息存储时间与你的产品套餐包相关,详见[产品价格](https://www.easemob.com/pricing/im)。 | +| 离线消息推送 |
- 用户离线时,可向消息接收方发送推送通知。
- 支持离线消息存储,默认为 7 天。 | +| 搜索消息 | 按照关键字搜索本地会话中的各类消息。 | +| 消息撤回 | 撤回发送成功的消息。默认可撤回发出 2 分钟内的消息。你可以在环信即时通讯云控制台设置消息撤回时长,该时长不超过 7 天。 | +| 消息回执 | 消息送达回执和消息已读回执。 | +| 修改消息 | 编辑发送成功的消息。 | +| 表情回复 | 对消息添加、删除表情。 | +| 定向消息 | 只向群组的单个或多个指定的成员发送消息,其他成员不会收到该消息。| +| 合并消息 | 将多个消息合并在一起进行转发。 | +| 导入和插入消息 | 在本地导入和插入消息。 | +| 删除消息 | 单向删除服务端和本地的历史消息、清除聊天记录。 | +| 置顶消息 | 置顶、取消置顶消息和获取置顶消息。 | +| 翻译消息 | 对文本消息按需翻译和自动翻译 | +| 只投在线用户 | 只将消息投递给在线用户。 | +| 消息审核(举报) | 举报违规消息。 | +| 获取消息流量统计 | 本地消息的流量统计 | + +:::tip +在消息方面,群聊会话与单聊会话的区别在于群聊支持定向消息。 +::: + +### 会话相关 + +| 功能 | 描述 | +| :-------------- | :----- | +| 会话列表 | 从服务器或本地获取会话列表。 | +| 会话免打扰 | 可设置指定群聊会话,收到新消息后是否提醒。 | +| 会话已读回执 | 接收方阅读会话中的所有消息后向服务器发送会话已读回执。与单聊会话不同,群聊会话已读回执只用于清空服务端的群聊会话的未读数,消息发送方不会通过回调收到会话已读回执。 | +| 会话未读数 | 获取和清零群聊会话的未读消息数。 | +| 会话置顶 | 将群聊会话固定在会话列表的顶部。 | +| 会话标记 | 对群聊会话添加标记。 | +| 会话删除 | 删除群聊会话。 | + +### 创建和管理群组 + +| 功能 | 描述 | +| :----------------- | :---------------------- | +| 创建群组 | 任何用户均可创建群组。群组创建者为群主。。 | +| 解散群组 | 只有群主才能解散群组。| +| 封禁/解禁群组 | 对群组封禁和解禁。| +| 屏蔽和解除屏蔽群消息 | 所有群组成员都可以屏蔽(不收群组消息)和取消屏蔽群组消息。| + +### 查询群组信息 + +| 功能 | 描述 | +| :----------------- | :---------------------- | +| 获取群组详情 | 群成员可以从内存获取群组详情,例如群组 ID、群组名称、群组描述。| +| 修改群组详情 | 修改群组详情,例如群组名称、描述和扩展信息。 | +| 获取群成员列表 | 从服务器获取群组成员的分页列表。 | +| 获取 app 中的群组列表 | 调用 REST API 分页获取应用下的群组的信息。 | +| 获取群组列表 | 用户可以获取公开群列表和自己创建或加入的群组列表。 | +| 查询当前用户已加入的群组数量 | 用户可以从服务器获取当前用户已加入的群组数量。 | +| 获取单个用户加入的所有群组 | 调用 REST API 根据用户 ID 分页获取指定用户加入的所有群组。 | +| 查看指定用户是否已加入群组 | 调用 REST API 查看单个用户是否已加入了指定的群组。 | + +### 群属性管理 + +| 功能 | 描述 | +| :--------------- | :----------------------------------------------------------- | +| 修改群组信息 | 群主和群管理员可修改群名称、描述和扩展字段。 | +| 修改/获取群公告 | 群主和群管理员可设置群公告,群成员可获取群公告。 | +| 管理共享文件 | 群主和群管理员可上传文件并删除所有群共享文件,群成员只能删除自己上传的文件。| + +### 群成员管理 + +| 功能 | 描述 | +| :--------------------- | :----------------------------------------------------------- | +| 加入群组 |
- 对于公开群和私有群,群主和管理员均可以邀请用户加入群。
- 对于公开群,用户也可以申请加入。| +| 退出群组 | 主动退群和被群主或群管理员踢出群。
群主不支持退群操作,只能解散群。 | +| 变更群主 | 群主可以将群组的所有权转让给指定的组成员。| +| 添加/移除/获取群管理员 | 群主可以添加成员到群组管理员列表,将管理员移出该列表。| +| 群组白名单 | 群主和管理员可以将群成员加入或移出白名单。
白名单成员可在全员禁言状态下发送群消息。 | +| 群组黑名单 | 群主和群管理员可以将群成员加入或移出黑名单。
黑名单中的成员将被移出群且无法再次加入群。 | +| 群组禁言 | - 群主和管理员可以将群成员加入或移出禁言列表,禁言列表中的成员无法发送群消息,但可以接收群消息。
- 支持开启或关闭全员禁言。| +| 管理群成员的自定义属性 | 支持设置群成员自定义属性和获取单个群成员的自定义属性,例如设置群组昵称和头像等。
群主可修改所有群成员的自定义属性,其他群成员只能修改自己的自定义属性。 | + +### 子区(Thread) + +// TODO:是否有必要列出 + +子区可由群成员基于一条群组消息创建,是群组的子集,该条群组消息称为子区的父消息。 + +#### 子区管理 + +| 功能 | 描述 | +| :--------- | :----- | +| 创建子区 | 所有群成员均可基于一条群组消息新建子区。 | +| 解散子区 | 仅子区所在群组的群主和群管理员可以解散子区。 | +| 加入子区 | 子区所在群组的所有成员均可以加入子区。你可以调用 REST API 批量加入子区。 | +| 退出子区 | 子区成员可主动退出子区或被群主和群管理员移除子区。 | +| 修改子区名称 | 仅群主和群管理员以及子区创建者可以修改子区名称。 | +| 获取子区详情 | 子区所属群组的所有成员均可以从服务器获取子区详情。 | +| 获取子区成员列表 | 子区所属群组的所有成员均可以从服务器分页获取子区成员列表。 | +| 获取子区列表 |
-从服务器分页获取 app 中或单个群组中自己加入和创建的子区列表。 | +| 批量获取子区中的最新消息 | 用户可以从服务器批量获取子区中的最新一条消息。 | +| 获取子区 | 获取 app 下的所有子区、单个用户加入的所有子区以及在指定群组中加入的所有子区。| + +#### 子区消息管理 + +| 功能 | 描述 | +| :--------- | :----- | +| 发送子区消息 | 发送子区消息和发送群组消息的方法基本一致。唯一不同的是,发送子区消息需要指定是否是子区的标记。| +| 接收子区消息 | 接收子区消息与接收单聊、群聊和聊天室相同。 | +| 撤回子区消息 | 撤回子区消息的逻辑与撤回单聊、群聊和聊天室相同。| +| 获取子区消息 | 从服务器或本地获取单个子区的消息。 | + +## 聊天室会话 + +聊天室是支持多人加入的类似 Twitch 的组织,可以应用于直播、消息广播等。聊天室中的成员没有固定关系,一旦离线后,不会收到聊天室中的任何消息。 + +聊天室成员数上限(包括聊天室所有者)默认最大值为 10,000,如需调整请联系商务。 + +// TODO:聊天室消息没有写本地存储。没有写 搜索、插入、更新消息。 + +### 消息相关 + +| 功能 | 描述 | +| :------------- | :---------------------- | +| 发送和接收消息 | 发送和接收各类消息,包括文本、图片、音频、视频、文件消息、位置消息、命令消息、自定义消息以及合并消息。 | +| 历史消息 | 环信服务器可存储消息。消息存储时间与你的产品套餐包相关,详见[产品价格](https://www.easemob.com/pricing/im)。要从服务器拉取聊天室的历史消息,需升级 SDK 到特定版本,并联系环信商务开通。 | +| 消息撤回 | 撤回发送成功的消息。默认可撤回发出 2 分钟内的消息。你可以在环信即时通讯云控制台设置消息撤回时长,该时长不超过 7 天。 | +| 修改消息 | 编辑发送成功的消息。 | +| 定向消息 | 只向聊天室的单个或多个指定的成员发送消息,其他成员不会收到该消息。| +| 合并消息 | 将多个消息合并在一起进行转发。 | +| 删除消息 | 单向删除服务端的历史消息、清除聊天记录。 | +| 置顶消息 | 置顶、取消置顶消息和获取置顶消息。要从服务器拉取聊天室的历史消息,需升级 SDK 到特定版本,并联系环信商务开通。 | +| 翻译消息 | 对文本消息按需翻译和自动翻译。 | +| 消息审核(举报) | 举报违规消息。 | +| 获取消息流量统计 | 本地消息的流量统计。 | + +:::tip +与单聊和群组聊天不同,聊天室不支持离线消息推送和本地消息操作。 +::: + +### 创建和管理聊天室 + +| 功能 | 描述 | +| :------------- | :----------------------------------------------------------- | +| 创建聊天室 | 只有被赋予 [超级管理员](/document/server-side/chatroom_superadmin.html) 权限的用户有权限创建聊天室。建议[调用 REST 接口创建聊天室](/document/server-side/chatroom_manage.html#创建聊天室)。 | +| 加入聊天室 | 没有被加入黑名单的所有 app 用户可自由加入聊天室。 | +| 离开聊天室 | 主动退出聊天室或被移出聊天室。 | +| 解散聊天室 | 聊天室所有者可解散聊天室。 | +| 获取聊天室详情 | 所有聊天室成员有权限获取聊天室详情,例如聊天室 ID、名称,和描述等。 | +| 实时更新聊天室成员人数 | 聊天室短时间内有成员频繁加入或退出时,可实时更新聊天室成员人数。| + +### 聊天室成员管理 + +| 功能 | 描述 | +| :----------------- | :----------------------------------------------------------- | +| 获取聊天室成员列表 | 所有聊天室成员均可获取当前聊天室成员列表。 | +| 变更聊天室所有者 | 聊天室所有者可以将聊天室的所有权转让给指定的聊天室成员。| +| 聊天室禁言列表 | 聊天室所有者或管理员可对单个聊天室成员进行禁言或移出禁言。 | +| 聊天室全员禁言 | 聊天室所有者或管理员可进行全员禁言。默认聊天室所有者和管理员不禁言。 | +| 聊天室按标签禁言(服务端)| 设置用户在聊天室中的标签,按标签对用户禁言。 | +| 聊天室白名单 | 聊天室所有者或管理员可将成员加入或移出白名单。全员禁言时,白名单的成员可以发消息。 | +| 聊天室黑名单 | 聊天室所有者或管理员可将成员加入或移出黑名单。
黑名单中的成员需要聊天室所有者主动从黑名单移除后才能再次加入聊天室。 | +| 管理聊天室管理员 | 仅聊天室所有者可添加或移除管理员。 | + +### 聊天室属性管理 + +| 功能 | 描述 | +| :----------------- | :------------ | +| 修改聊天室名称 | 仅聊天室所有者可修改聊天室名称。 | +| 获取/更新聊天室公告 | 仅聊天室所有者可更新公告、删除公告。
所有成员可获取公告。 | +| 管理聊天室自定义属性(key-value) | 设置、获取和删除以及强制设置和强制删除聊天室自定义属性。 | + +## 超级社区 + +环信超级社区(Circle)是一款基于环信 IM 打造的类 Discord 实时社区应用场景方案,支持社区(Server)、频道(Channel) 和子区(Thread) 三层结构。一个 App 下可以有多个社区,同时支持陌生人/好友单聊。用户可创建和管理自己的社区,在社区中设置和管理频道将一个话题下的子话题进行分区,在频道中根据感兴趣的某条消息发起子区讨论,实现万人实时群聊,满足超大规模用户的顺畅沟通需求。 + +### 消息相关 + +| 功能 | 描述 | +| :------------- | :---------------------- | +| 发送和接收消息 | 发送和接收各类消息,包括文本、图片、音频、视频、文件消息、位置消息、命令消息、自定义消息以及合并消息。 | +| 本地存储 | 接收的消息存储在本地。 | +| 历史消息 | 环信服务器可存储消息。消息存储时间与你的产品套餐包相关,详见[产品价格](https://www.easemob.com/pricing/im)。 | +| 搜索消息 | 按照关键字搜索本地会话中的各类消息。 | +| 消息撤回 | 撤回发送成功的消息。默认可撤回发出 2 分钟内的消息。你可以在环信即时通讯云控制台设置消息撤回时长,该时长不超过 7 天。 | +| 表情回复 | 对消息添加、删除表情。 | +| 导入和插入消息 | 在本地导入和插入消息。 | +| 删除消息 | 单向删除服务端和本地的历史消息、清除聊天记录。 | +| 翻译消息 | 对文本消息按需翻译和自动翻译 | +| 消息审核(举报) | 举报违规消息。 | + +::tip +1. 超级社区不支持消息编辑、合并消息、定向消息、置顶消息、只投在线吧。 +2. 超级社区支持删除消息吗? +:: + +### 社区管理 + +|功能|描述| +| :- | :- | +|创建社区|每个用户默认最多可创建 100 个社区,如需调整该阈值,请联系商务。| +|修改社区信息|社区所有者和管理员可修改社区基本信息。| +|解散社区|解散社区需要社区所有者权限。
解散社区后所有成员将收到社区解散的回调信息。| +|添加社区标签|社区所有者和管理员可以给社区增加标签,非社区内用户可以通过搜索标签找到社区。每个社区最多可添加 10 个标签。| +|移除社区标签|社区所有者和管理员可以移除社区已有标签。| +|获取社区标签列表|社区成员可获取社区标签列表。| +|获取社区详情|用户可以获取社区的详情。| +|获取已加入社区|获取用户已加入的社区列表。 | +|搜索公开社区|社区成员可以根据社区名称或标签名称搜索公开社区。 | +|分页获取社区成员列表|分页获取指定社区中的成员列表。| + +### 社区成员管理 + +|功能|描述| +| :- | :- | +|加入社区|社区分为公开和私密社区。
- 对于公开社区,用户可以通过搜索社区名称和标签的方式申请加入社区,或者由社区内成员邀请加入。
- 对于私密社区,只能通过社区内成员邀请加入。用户可以选择同意或拒绝加入社区。| +|退出社区|社区所有者不支持退出社区操作,只能解散社区。
退出社区分为主动退出和被动退出,被动退出即为被社区所有者或管理员踢出社区。社区所有者和管理员可将普通用户踢出社区,管理员只能被社区所有者踢出社区。 | +|查询当前用户是否在社区内|可判断指定用户是否已经加入了指定社区。| +|修改社区中成员角色|社区所有者可以将管理员权限赋予社区中普通用户,或移除管理员权限将其变为普通用户。| +|查询当前用户在社区内角色|社区内成员可以获取社区内用户的角色。| + +### 频道管理 + +|功能|描述| +| :- | :- | +|创建频道|社区所有者可以在社区中创建公开或私密频道。| +|修改频道信息|社区所有者和管理员可以修改频道的属性。| +|解散频道|社区所有者可以解散社区中的频道。| +|获取频道详情|社区成员可获取频道的详情。| +|获取社区的公开频道列表|社区成员可以获取社区下的所有公开频道的列表。| +|获取社区的私密频道列表|社区成员可以获取社区下的所有私密频道的列表。| +|获取社区中用户加入的频道列表|社区成员可以获取自己已经加入的频道。| +|获取频道的成员列表|频道成员可以获取该频道下的成员列表。| +|创建频道分组|社区所有者可以创建频道分组。| +|修改频道分组名称|社区所有者可修改频道分组名称。| +|获取社区下的频道分组列表|社区成员可以获取社区下的频道分组列表。| +|删除频道分组|社区所有者可以删除频道分组。| +|分页获取频道分组下的公开频道列表|社区成员可以分页获取频道分组下公开的频道列表。| +|分页获取频道分组下的私密频道列表|社区成员可以分页获取频道分组下的私密频道列表。| +|更换频道所属的频道分组|社区所有者和管理员可以将指定的频道从一个频道分组转移至另一个频道分组中。| + +### 频道成员管理 + +|功能|描述| +| :- | :- | +|加入频道|频道分为公开和私密频道。
- 对于公开频道,用户可以获取公开频道列表,然后申请加入频道,或者由频道成员邀请加入。
- 对于私密频道,只能通过频道成员邀请加入。用户可以选择同意或拒绝加入频道。| +|退出频道|退出频道分为主动退出和被动退出,被动退出即被社区所有者或管理员踢出频道。 | +|查询用户是否在频道中|查询指定用户是否在指定频道中。| +|频道禁言/解除禁言|社区所有者和社区管理员可以将频道成员加入或移出禁言列表,禁言列表中的成员无法发送频道消息,可以接收频道中的消息。| +|获取频道下的禁言列表|社区所有者和社区管理员可以获取频道下被禁言用户的列表。| + +### 子区管理 + +|功能|描述| +| :- | :- | +|创建子区|频道成员可以在频道中创建子区。| +|加入子区|频道成员可以加入频道下的子区。| +|退出子区|子区成员可以主动退出或被移出自己加入的子区。| +|删除子区|社区所有者可以删除该频道中的子区。| +|获取子区详情|频道成员可以获取子区的详情。| +|获取频道下创建的子区列表|频道成员可以获取在指定频道下创建的子区列表。| +|获取频道下加入的子区列表|频道成员可以获取频道下加入的子区。| +|获取频道的子区列表|频道成员获取频道的所有子区的列表。| +|修改子区名称|社区所有者、社区管理员和子区的创建者可以修改子区的名称。| + +## 用户相关 + +### 用户账号管理 + +通过调用 RESTful API,可进行如下用户账号操作: + +| 功能 | 描述 | +| :----------------- | :---------------------- | +| 注册用户 | 单次请求最多可注册 60 个用户 ID。 | +| 获取用户详情 | 用户名称、创建时间以及推送设置等。 | +| 删除用户账号 | 删除某个 App 下指定数量的用户账号。 | +| 修改用户密码 | 修改用户的登录密码,不需要提供原密码。 | +| 封禁/解禁用户 | 禁用用户,使其立即下线并无法登录进入环信即时通讯 IM,直到被解禁后才能恢复登录。 | +| 强制用户下线 | 将用户状态改为离线,用户需要重新登录才能正常使用。 | +| 获取用户在线状态 | 查看单个用户是在线还是离线状态。 | +| 获取指定账号的在线登录设备列表 | 获取指定账号的在线登录设备列表。 | + +### 用户属性 + +| 功能 | 描述 | +| :----------------- | :---------------------- | +| 设置用户属性 | 设置用户昵称、头像、邮箱、电话等。 | +| 获取用户属性 | 获取指定一个或多个用户的全部用户属性。 | +| 获取 app 下用户属性总大小(仅服务端) | 获取该 app 下所有用户的属性数据大小,单位为字节。 | +| 删除用户属性 | 删除单个用户的所有属性。 | + +### 在线状态订阅 + +| 功能 | 描述 | +| :----------------- | :---------------------- | +| 订阅指定用户的在线状态 | 每个用户 ID 订阅的用户数不超过 3000。 | +| 发布自定义在线状态 | 发布自定义在线状态。 | +| 取消订阅指定用户的在线状态 | 不再订阅指定用户的在线状态。 | +| 查询被订阅用户列表 | 分页查询自己订阅的用户列表。 | +| 获取用户的当前在线状态 | 获取用户当前的在线状态,包括未订阅的用户的状态。 | + +### 用户全局禁言 + +你可以调用 RESTful API 实现用户全局禁言: + +| 功能 | 描述 | +| :----------------- | :---------------------- | +| 设置用户全局禁言 | 对单个用户 ID 在所有单聊、群组或聊天室中禁言,使其无法发送消息。 | +| 查询单个用户 ID 全局禁言 | 查询单个用户的单聊、群聊和聊天室的全局禁言详情。 | +| 查询 app 下的所有全局禁言的用户 | 查询 app 下所有全局禁言的用户及其禁言剩余时间。 | + +## 离线推送 + +环信即时通讯 IM 的 Android、iOS、uni-app 和 React Native SDK 支持离线推送,支持的手机厂商推送服务包括 APNs、Google FCM、华为、荣耀、小米、OPPO、VIVO 和魅族。 + +| 功能 | 描述 | +| :----------------- | :---------------------- | +| 绑定和解绑推送信息 | 将设备与推送信息会进行绑定获解绑,包括设备 ID、推送证书和 device token。 | +| 设置推送标题和推送内容 | 可以通过以下方式设置推送的标题和内容:
- 调用方法设置;
- 使用推送模板
- 使用消息扩展字段 | +| 设置推送昵称 | 设置离线推送时通知栏中显示的消息发送方的昵称。 | +| 设置通知方式 | 包括三种方式:
- 接收所有离线消息的推送通知。
- 仅接收提及某些用户的消息的推送通知。
- 不接收离线消息的推送通知。 | +| 设置免打扰模式 | 设置免打扰时间段和免打扰时长。 | +| 设置推送通知的首选语言 | 若启用了翻译功能,SDK 会同时发送原始消息和翻译后的消息。如果翻译消息的语言符合你的设置,则翻译消息显示在推送通知中;否则,将显示原始消息。 | +| 设置推送扩展功能 | 利用扩展字段实现自定义推送设置,例如强制推送和发送静默消息。 | +| 查询离线推送结果统计数据 | 可以通过[环信控制台](https://console.easemob.com/user/login)查询离线推送的结果。 | + +## 内容审核 + +支持使用环信即时通讯 IM [内容审核服务](/product/moderation/moderation_overview.html)对消息内容进行多样化场景检测,帮助你对应用消息内容进行管控,规避内容违规风险。 + +| 功能 | 描述 | +| :------------- | :---------------------- | +| 多消息类型审核 | 智能识别文本、图片和音视频文件。 | +| 自定义消息处置规则 | 自定义消息下发或拦截的策略。 | +| 消息审核结果可回调 | 支持将消息审核结果回调至客户服务器。 | +| 一站式内容审核后台 | 提供可视化的内容审核后台,支持查询审核记录、审核数据统计。 | + + + + + + + + + diff --git a/docs/product/faq_integration_issues.md b/docs/product/faq_integration_issues.md index f7544a9a3..3287f24b0 100644 --- a/docs/product/faq_integration_issues.md +++ b/docs/product/faq_integration_issues.md @@ -50,4 +50,14 @@ NSString *logPath = [EMClient.sharedClient getLogFilesPath:&error]; 通过 XCode debug 时,可以连接手机或者模拟器,找到应用的 sandbox 目录,然后提取日志文件。 -App_Sandbox_path/Application Support/HyphenateSDK/easemobLog \ No newline at end of file +App_Sandbox_path/Application Support/HyphenateSDK/easemobLog + +## 消息重发机制 + +1. 对于 Android、iOS 、HarmonyOS、Windows 端和三个跨平台框架 Unity、React Native 和 Flutter 来说,消息重发机制如下: + +客户端调用发送消息的方法后,会等待服务器返回响应,超时时间为 10 秒。若因响应超时导致发送失败,客户端会再次尝试发送消息,即通过长连接重连服务器,然后发送消息。如果再次失败,SDK 认为消息发送失败,返回服务器不可达的错误消息,即错误码 300,iOS 为 `EMErrorServerNotReachable`,Android, HarmonyOS 和 Windows 为 `SERVER_NOT_REACHABLE`。 + +2. 对于 Web 来说,消息重发机制如下: + +发送消息时如果 WebSocket 已经断开正在进行重连时,重新连接后会重新发送消息;若 WebSocket 断开时发送消息,SDK 会提示网络断开连接导致消息发送失败的错误,即错误码 510 `MESSAGE_WEBSOCKET_DISCONNECTED`。 diff --git a/docs/product/introduction.md b/docs/product/introduction.md index 478b5fdb7..ae9803847 100644 --- a/docs/product/introduction.md +++ b/docs/product/introduction.md @@ -1,101 +1,107 @@ # 产品介绍 -环信即时通讯 IM 为开发者提供高可靠、低时延、高并发、安全、全球化的通信云服务,帮助开发者快速构建端到端通信的场景。环信提供单聊、群聊、聊天室和超级社区服务,支持同时在线人数无上限,聊天室亿级消息并发,全球平均延时小于 200 毫秒,相同区域平均延时小于 100 毫秒。 +环信即时通讯 IM 为开发者提供高可靠、低时延、高并发、安全、全球化的通信云服务,帮助开发者快速构建端到端通信的场景。环信提供 SDK 和 RESTful API,支持同时在线人数无上限,聊天室亿级消息并发,全球平均延时小于 200 毫秒,相同区域平均延时小于 100 毫秒。 -## 平台架构 +- 支持单聊、群聊、聊天室服务; +- 提供服务端 RESTful API 和 [回调服务](/document/server-side/callback_overview.html); +- 提供多平台 SDK,包括 Android、iOS、Web、HarmonyOS、Windows、Linux、Unity、Flutter、React Native、小程序、uni-app 和 Electron; +- 提供 EaseIM(Demo)和 UIKit。 -环信即时通讯 IM 的架构特点: +环信即时通讯 IM 与你的应用之间的交互如下图所示: + +// TODO:产品经理提供图 + +## 产品架构 + +环信即时通讯 IM 提供单聊、群聊、聊天室、离线推送、账号鉴权、用户资料和用户关系等服务,以及完善的 SDK API 和 RESTful API。 + +// TODO:产品经理提供图 ![环信架构](/images/product/framework.png) -### 服务端 +## 产品服务 -环信即时通讯通过 REST 平台提供如下 REST API,你可以通过你的业务服务器向环信 REST 服务器发送 HTTP 请求,在服务端实现实时通信。 +### 接入服务 -- 消息管理 -- 群组管理 -- 聊天室管理 -- 用户管理:账号管理、用户属性、在线状态订阅、用户关系管理等 -- 获取 Token -- 离线推送 +// TODO:产品经理提供接入服务的描述,展示有什么优势可实现可靠的通讯。 +// 下面是腾讯云的: -某些功能只能通过 REST API 提供,例如 封禁和解禁账号、全局禁言、发送 app/聊天室 全局广播消息等。 +接入服务为即时通信 IM 提供覆盖全球的高连通、高可靠、强安全的网络连接通道,自研多重最优寻址算法,具有全网调度能力,使用智能兼容技术穿透网关策略,长连接多路复用,传输层协议优化,通道加密等,让开发者不必关心网络细节,即可安全地与业务后台实现简单可靠的通讯。 +终端登录时,IM SDK 会访问就近接入点或加速点。全球接入加速点分布如下: -环信即时通讯 IM 提供[消息回调](/document/server-side/callback_overview.html)功能,在事件发生之前或之后,环信 IM 服务器会以 HTTP POST 请求的形式向你的应用服务器发送通知,让 app 后台干预该事件的处理逻辑或者实现必要的数据同步。 +- 中国:华南、华北、华东、香港、台湾等。 +- 其他国家(或地区): +- 亚洲:新加坡、印度尼西亚、阿联酋、泰国、马来西亚、日本、越南、韩国、菲律宾等。 +- 欧洲:英国、荷兰、法国、德国、意大利、挪威、法国、西班牙等。 +- 南美洲:巴西等。 +- 北美洲:美国、加拿大、墨西哥等。 +- 大洋洲:澳大利亚等。 +- 非洲:南非、尼日利亚等。 + +### 数据中心 + +环信在全球设有五大数据中心、200+ 边缘加速节点,网络服务覆盖全球 200 多个国家和地区。环信数据中心同城三中心部署,SLA 99.95%,提供优异的弱网对抗能力,70% 丢包情况下消息到达率 100%。 -### 客户端 +你在环信控制台创建应用时需选择数据中心,你的业务数据会存在该数据中心。详见 [数据中心介绍文档](https://doc.easemob.com/product/data_center.html)。 -- **各端 SDK**:提供封装的方法和对象调用 API 实现实时通信。 -- **单群聊 UIKit**:提供各种组件实现会话列表、聊天界面、联系人列表及后续界面等功能,帮助开发者根据实际业务需求快速搭建包含 UI 界面的即时通讯应用。 -- **聊天室 UIKit**:聊天室中的用户可实时交互,发送普通弹幕消息、打赏消息和全局广播等功能。 +### 单聊 -:::tip -环信支持同一账号同时登录多台设备,可实现终端用户的消息通过服务器保存和同步,确保各端均能收发消息同步。 -::: +单聊即一对一聊天,提供包括文本、图片、位置、语音、视频和自定义消息(例如,红包)以及合并消息的能力,支持离线消息、消息漫游、消息回执、消息撤回、修改、搜索、表情回复(Reaction)、翻译、置顶以及消息审核等功能。详情可参见 [单聊消息]() 文档。 -环信即时通讯 IM 支持 Android、iOS、Web 等平台,而且各平台之间可互通。下表为即时通讯支持的各平台版本: +### 群聊 -| 平台 | 支持的版本 | Demo | 单群聊 UIKit | 聊天室 UIKit | -| ------------ | ------- | ------- | ------- | ------- | -| Android | Android 5.0 或以上版本(API 级别 21 或以上) | 支持 | 支持 | 支持 | -| iOS | iOS 10.0 或以上版本 | 支持 |支持 | 支持 | -| Web |
- Internet Explorer 9 或以上
- FireFox 10 或以上
- Chrome 54 或以上 Safari 6 或以上
- Edge 12 或以上
- Opera 58 或以上
- iOS Safari 7 或以上
- Android Browser 4.4 (KitKat) 或以上 | 支持 | 支持 | 支持 | -| HarmonyOS | HarmonyOS NEXT(API 级别 12 或以上) | - | - | - | -| Unity | Unity 2017 或以上版本 | | - | - | -| Windows | Windows 10 或以上版本 | | - | - | -| React Native | React Native 0.63.4 或以上版本 | 支持 |支持 | 支持 | -| Flutter | Flutter 2.10 | 支持 | 支持 | 支持 | +群组是支持多人沟通的即时通讯系统,成员关系相对稳定。所有群成员可以收到群中的消息,可以在群中发送消息。 -### 控制台 +群组按照是否对用户公开,可以分为公开群和私有群。 -环信即时通讯控制台提供对环信 IM 的管理功能。通过控制台,你可以实现以下操作: -- 开通即时通讯 IM 服务、购买增值服务、升级版本; -- 消息推送、回调配置; -- 用户、群组、聊天室管理; -- 查看数据统计; -- 内容审核配置。 +| 群组分类 | 加群方式 | 应用场景 | +| :------- | :---------- | :---------- | +| 公开群 | 任何用户可以搜索到该群,任何人均可申请加入群或者被管理员和群主邀请入群。任何用户均可申请入群,是否需要群主和群管理员审批取决于群组设置。 | // TODO:产品经理补充应用场景 | +| 私有群 | 群外用户不能搜索到此类群组,需要被邀请才能入群。除了群主和群管理员,群成员是否也能邀请其他用户进群取决于群组的设置。 | // TODO:产品经理补充应用场景 | -![img](/images/product/console.png) +你可以根据自己的需求对群组进行定制,包括用户创建群组时可以设置群组扩展字段自定义更多群组信息,设置群成员自定义属性(KV),例如群成员在群组中的昵称和头像等。详情可参见 [群组](/product/product_group_overview.html) 文档。 -## 数据中心 +### 聊天室 -环信在全球设有五大数据中心、200+ 边缘加速节点,网络服务覆盖全球 200 多个国家和地区。环信数据中心同城三中心部署,SLA 99.95%。 优异的弱网对抗能力,70% 丢包情况下消息到达率 100%。 +聊天室是支持多人加入的类似 Twitch 的组织,可以应用于直播、消息广播等。与群组相比,聊天室中的成员没有固定关系,一旦离线后,不会收到聊天室中的任何消息。详情可参见 [聊天室](/product/product_chatroom_overview.html) 文档。 -你在环信控制台创建应用时需选择数据中心,你的业务数据会存在该数据中心。详见[数据中心介绍文档](https://doc.easemob.com/product/data_center.html)。 +### 用户资料和用户关系 -## 主要功能 +// TODO:产品经理确认:用户资料、用户属性,用哪个?目前咱们官网上是用户属性。 +// TODO:产品经理补充环信 IM 如何保障这些数据的安全。 -环信即时通讯 IM 提供[单聊](conversations.html#单聊会话)、[群聊](conversations.html#群组会话)、[聊天室](conversations.html#聊天室会话)和[超级社区](conversations.html#超级社区)会话的消息功能、离线推送、用户管理、内容审核等功能。 +环信支持用户资料存储和用户关系托管,详情可参见 [用户资料](/product/product_user_attribute.html) 和 [用户关系](/product/product_user_relationship.html) 文档。 -### 会话对比 +- 用户资料:例如,用户昵称、头像、邮箱、电话、性别、签名、生日等。 +- 用户关系:好友列表和黑名单等。 -下表概述各类会话的定义和主要消息功能。关于四类会话的详情,请参见[主要功能文档](conversation.html)。 +### 账号鉴权 -| 会话类型 | 定义 | 消息功能 |管理操作| -| :------------- | :---------------------- | :---------------------- | :---------------------- | -| 单聊 | 两个用户一对一聊天。| 支持消息发送、消息漫游、修改、撤回、置顶、回执、表情回复、翻译等特性。|好友添加、移除和获取。| -| 群聊 | 支持多人沟通的即时通讯系统。| **支持单聊的所有消息功能**。
另外,支持**定向消息**功能,即仅向某些成员发送消息。|
- 群组创建、加入、退出;
- 群组黑名单、白名单和禁言。| -| 聊天室 | 类似 Twitch 的组织,可以应用于直播、消息广播等。|
- 支持大部分消息功能。
- 消息漫游需单独开通。
- 用户仅在线时可收到消息,**离线后不会收到聊天室中的任何消息**。|
- 聊天室创建、加入、退出;
- 聊天室黑名单、白名单和禁言。| -| 超级社区 |
- 类 Discord 实时社区应用场景方案,满足超大规模用户的顺畅沟通需求。| 支持消息发送、撤回、表情回复等特性。|
支持社区(Server)、频道(Channel) 和子区(Thread) 三层结构。
- 社区、频道、子区管理及其成员管理。| +即时通讯 IM 支持使用 App 自身账号快速集成即时通信 IM 服务,无需进行账号映射。集成 SDK 后,可以通过接口调用完成用户 ID 与 Token 的鉴权,详情可参见 [用户注册与登录](/product/product_user_registration_login.html) 文档。 -### 用户管理 +## 管理与监控 -| 功能 | 描述 | -| :------------- | :---------------------- | -| 用户账号 | 用户账号注册、登录验证、删除、封禁、解禁账号等。 | -| 在线状态订阅(Presence) | 将用户终端的在线、离线或设置的自定义状态,同步给 app server。 | -| 用户属性 | 提供用户资料的存储能力, 包括用户昵称、头像、邮箱、电话、性别等属性。 | -| 用户关系 | 支持用户关系存储能力, 包括好友关系和用户黑名单。 | -| 用户全局禁言(仅服务端) | 对单个用户 ID 设置单聊、群组或聊天室消息全局禁言。 | -| 用户收藏(仅服务端)| 收藏聊天过程中发送成功的各类消息或你的其他自定义内容。 | +环信控制台提供对即时通讯 IM 的管理功能。通过控制台,你可以开通即时通讯 IM 服务、购买增值服务、升级版本,进行消息推送、回调配置以及用户、群组、聊天室管理;同时,你还可以进行内容审核配置以及查看数据统计。 + +## 服务端功能 + +### RESTful API + +环信即时通讯通过 REST 平台提供如下 RESTful API,你可以通过你的业务服务器向环信 REST 服务器发送 HTTP 请求,在服务端实现实时通信。RESTful API 可实现消息发送、获取、撤回、修改、导入、表情回复以及群组管理、聊天室管理、用户账号和用户关系管理等功能。相对于环信控制台,RESTful API 可实现更为强大的管理能力。详情请参见 [RESTful API](/document/server-side/overview.html) 文档。 + +某些功能只能通过 RESTful API 提供,例如,封禁和解禁账号、全局禁言、发送 app/聊天室 全局广播消息等。 + +### 消息回调 + +环信即时通讯 IM 提供[消息回调](/document/server-side/callback_overview.html)功能,在事件发生之前或之后,环信 IM 服务器会以 HTTP POST 请求的形式向你的应用服务器发送通知,让 app 后台干预该事件的处理逻辑或者实现必要的数据同步。 -### 离线推送 +## 私有化 -客户端断开连接或应用进程被关闭等原因导致用户离线时,即时通讯 IM 会通过第三方消息推送服务向该离线用户的设备推送消息通知,支持 Android、iOS、uni-app 和 React Native 端离线推送。离线推送服务支持免打扰配置、推送通知的显示内容设置、推送通知翻译、推送模板以及推送扩展字段等。 +环信即时通讯私有化服务是基于 IM 核心技术实现的可私有化部署解决方案。该方案可适配内网物理服务器集群、公有云以及私有云等任意部署环境,提供功能完备、安全可靠、易于扩展的即时通讯平台。更多详情,请参见[私有化服务文档](https://docs-im-privatization.easemob.com/document/v2/privatization/uc_introduction.html)。 -### 内容审核 +## 安全合规 -支持使用 IM [内容审核服务](/product/moderation/moderation_overview.html)对消息内容进行多样化场景检测,帮助你对应用消息内容进行管控,规避内容违规风险,支持多消息类型审核、自定义消息处置规则、消息审核结果可回调和一站式内容审核后台。 +// TODO:请补充这方面。腾讯云列明了 IM 通过的一些认证,如果咱们这边有的话,可以列一下。 diff --git a/docs/product/message_chatroom.md b/docs/product/message_chatroom.md new file mode 100644 index 000000000..04ec60af5 --- /dev/null +++ b/docs/product/message_chatroom.md @@ -0,0 +1,72 @@ +# 聊天室消息 + + + +## 应用场景 + +- 多用户聊天室内沟通:聊天室中的成员通过收发消息进行沟通。 +- App 管理员向聊天室发消息:App 管理员通过调用 RESTful API 在聊天室内发送消息。 +- 向所有聊天室发系统通知: // TODO:请添加描述 + +## 消息类型 + +| 类型
| 描述 | +| :------------- | :----------------------------------------------------------- | +| 文本消息 | 文本消息的内容是文本,包含超链接和表情符号等。表情消息基于文本消息实现。
文本消息大小限制为 5 KB。 | +| 位置消息 | 位置消息需要第三方的地图服务提供经纬度信息。接收方接收到位置消息,通过经纬度信息可以在第三方的地图服务中显示位置。 | +| 透传消息 | 透传消息可视为命令消息。通过发送这条命令给对方,通知对方要执行的操作,对方收到消息后系统可以自定义处理。透传消息不会在 UI 上展示。
消息大小限制为 5 KB。
你可以使用透传消息更新头像和昵称以及进行状态同步等。
透传消息不会存入本地数据库。 | +| 图片消息 | 图片消息是附件消息,需要先将图片上传至消息服务器。接收方收到图片时自动下载图片缩略图。
图片默认不能超过 10 MB,图片消息大小限制为 5 KB。 | +| 语音消息 | 语音消息是附件消息,需要先将语音上传至消息服务器。接收方收到语音时自动下载语音。
音频文件默认不能超过 10 MB,音频消息大小限制为 5 KB。 | +| 视频消息 | 视频消息是附件消息,需要先将视频上传至消息服务器。接收方收到视频时自动下载视频缩略图,点击下载视频消息。对于 Web 端,视频消息没有缩略图。
视频文件默认不能超过 10 MB,视频消息大小限制为 5 KB。 | +| 文件消息 | 文件消息是附件消息,需要先将文件上传至消息服务器。
附件大小不能超过 10 MB,文件消息大小限制为 5 KB。 | +| 自定义消息 | 开发者自定义的消息类型。自定义消息支持设置类型名称,开发者可以添加多种自定义消息。
自定义消息大小限制为 5 KB。
自定义消息的使用场景:红包消息、模板消息等。 | + +:::tip +1. 默认情况下,消息附件,例如图片、音频、视频和其他文件不能超过 10 MB,可存储 7 天。若要提升其中一个上限,请联系商务。 +2. 当基础的消息类型不满足需求时,可以使用消息自定义扩展增强基础消息类型,典型的用例是发送引用较早文本或图像消息的消息。使用扩展后,消息大小不能超过原类型消息的大小。 +::: + +## 聊天室消息能力 + +| 类型 | 功能描述 | 应用场景 | +| ---------- | ---------------- | --------------------------- | +| 发送聊天室普通消息 | 聊天室成员可以通过 IM SDK 接口发送消息。App 管理员无需加入聊天室,即可调用 RESTful API 在任意聊天室中发送消息。 | 聊天室成员在聊天室内发送消息,App 管理员向任意聊天室发送消息 | +| 接收聊天室在线消息 | 聊天室成员可以通过 IM SDK 接收聊天室在线消息 | 在线聊天室成员实时接收聊天室消息 | +| 聊天室成员获历史消息 | 聊天室成员通过 IM SDK 接口查询历史消息
需要升级 SDK 到指定版本,并联系环信商务开通。 | 聊天室成员查看聊天室聊天记录 | +| App server 获取聊天室消息 |
- App 管理员可通过 RESTful API 下载 App 在某一段时间内产生所有的消息;
- App 管理员通过 RESTful API,获取任意聊天室的聊天记录;
- App server 可以通过聊天室发消息回调,实时获取聊天室消息。 |
- App 定期备份消息记录;
- App 需要获取某个聊天室的历史消息;
- App 需要实时获取聊天室消息 | +| 聊天室消息中携带发送者资料 | 通过消息扩展字段在聊天室消息中携带发送者的昵称、头像、用户或聊天室相关的自定义字段 | 展示消息发送方昵称、头像等用户信息 | +| 聊天室消息发送控制 | 通过禁言、聊天室消息发送前回调、黑名单、内容审核进行发送控制。 |
- 禁止聊天室内某个成员发送消息
- 禁止聊天室内所有成员在该聊天室内发消息
- App server 过滤或修改消息 | +| 聊天室消息频率控制 | 对于单个 app,RESTful API 存在以下 3 个限制:
- 10 个聊天室/次
- 100 条/秒
- 20 次/秒 | 控制接口的调用 | + +:::tip +与群组聊天不同,聊天室不支持消息离线推送。 +::: + +## 聊天室消息发送控制 + +| 聊天室消息发送控制 | 描述 | +| :--------- | :----- | +| 消息发送优先级 | 你可以设置聊天室的消息优先级:高、普通和低三种级别。在聊天室内消息并发量较大或消息发送频率过高的情况下,服务器首先丢弃低优先级消息,优先送达高优先级的消息。 | +| 消息优先发送(聊天室白名单)| 聊天室白名单中的成员在聊天室中发送的消息为高优先级,会优先送达,但不保证必达。当负载较高时,服务器会优先丢弃低优先级的消息。即便如此若负载仍很高,服务器也会丢弃高优先级消息。 | +| 禁止发送消息 | - **黑名单**:成员加入黑名单后,会被移出聊天室,无法再收发消息。
- **禁言**:成员被加入禁言列表后,将无法在聊天室内发送消息,即使其被加入白名单也不能发消息,但可以正常接收消息。**全员禁言**开启后,除了在白名单中的成员,其他成员不能发消息。
- **全局禁言 (RESTful API)**:用户被全局禁言后,无法发送单聊消息、或在无法在所有群组或聊天室中发送消息。聊天室白名单中的成员被全局禁言后,仍无法在所有单聊、群组或聊天室中发消息。| +|对消息放行或拦截|- **发送前回调**:环信 IM 服务器会在发送消息之前,向你的应用服务器发送请求,你可以根据业务需求配置规则决定下发或拦截消息。
- **内容审核**:基于内容审核结果对消息进行处理,包括拦截、替换敏感信息和放行消息。该服务只对文本、图片、音频和视频消息有效。 | + +## 聊天室消息频率控制 + +- REST API + + 对于单个 app,发送聊天室消息 RESTful API 存在以下限制(你可以联系环信商务上调限制): + - 10 个聊天室/次 + - 100 条/秒:每秒最多可向聊天室发送 100 条消息。例如,你每次向 10 个聊天室发送消息,即发送了 10 条消息,你每秒最多可调用 10 次该接口。第 11 次调用时,则报 403 错误。 + - 100 次/秒:每秒最多可调用 100 次。第 101 次调用时会报 429 错误。 + +- SDK + + 默认情况下,SDK 对单个用户发送消息的频率未做限制。如果你联系了环信商务设置了该限制,一旦在聊天室中单个用户的消息发送频率超过设定的上限,SDK 会上报错误,例如 Android 端错误码为 509 `MESSAGE_CURRENT_LIMITING`。 + +## 消息格式 + +关于各类型消息格式以及离线推送的消息扩展字段,详见[消息格式文档](product_message_format.html)。 + + + diff --git a/docs/product/message_group.md b/docs/product/message_group.md new file mode 100644 index 000000000..6608b2e2c --- /dev/null +++ b/docs/product/message_group.md @@ -0,0 +1,70 @@ +# 群组消息 + + + +## 应用场景 + +- 多用户群组内沟通:群组中的成员通过收发消息进行沟通。 +- App 管理员向群组发消息:App 管理员通过调用 RESTful API 在群组内发送消息。 +- 向群组发送系统通知: // TODO:需要删掉吗? + +## 消息类型 + +| 类型
| 描述 | +| :------------- | :----------------------------------------------------------- | +| 文本消息 | 文本消息的内容是文本,包含超链接和表情符号等。表情消息基于文本消息实现。
文本消息大小限制为 5 KB。 | +| 位置消息 | 位置消息需要第三方的地图服务提供经纬度信息。接收方接收到位置消息,通过经纬度信息可以在第三方的地图服务中显示位置。 | +| 透传消息 | 透传消息可视为命令消息。通过发送这条命令给对方,通知对方要执行的操作,对方收到消息后系统可以自定义处理。透传消息不会在 UI 上展示。
消息大小限制为 5 KB。
你可以使用透传消息更新头像和昵称以及进行状态同步等。
透传消息不会存入本地数据库。 | +| 图片消息 | 图片消息是附件消息,需要先将图片上传至消息服务器。接收方收到图片时自动下载图片缩略图。
图片默认不能超过 10 MB,图片消息大小限制为 5 KB。 | +| 语音消息 | 语音消息是附件消息,需要先将语音上传至消息服务器。接收方收到语音时自动下载语音。
音频文件默认不能超过 10 MB,音频消息大小限制为 5 KB。 | +| 视频消息 | 视频消息是附件消息,需要先将视频上传至消息服务器。接收方收到视频时自动下载视频缩略图,点击下载视频消息。对于 Web 端,视频消息没有缩略图。
视频文件默认不能超过 10 MB,视频消息大小限制为 5 KB。 | +| 文件消息 | 文件消息是附件消息,需要先将文件上传至消息服务器。
附件大小不能超过 10 MB,文件消息大小限制为 5 KB。 | +| 自定义消息 | 开发者自定义的消息类型。自定义消息支持设置类型名称,开发者可以添加多种自定义消息。
自定义消息大小限制为 5 KB。
自定义消息的使用场景:红包消息、模板消息等。 | + +:::tip +1. 默认情况下,消息附件,例如图片、音频、视频和其他文件不能超过 10 MB,可存储 7 天。若要提升其中一个上限,请联系商务。 +2. 当基础的消息类型不满足需求时,可以使用消息自定义扩展增强基础消息类型,典型的用例是发送引用较早文本或图像消息的消息。使用扩展后,消息大小不能超过原类型消息的大小。 +3. 消息附件的大小及存储时间限制与群组共享文件的相同。如果消息附件的其中一个限制进行了上调,群组共享文件的对应限制也会随之自动调整,反之亦然。 +::: + +## 群组消息能力 + +| 类型 | 功能描述 | 应用场景 | +| ---------- | ---------------- | --------------------------- | +| 发送群组普通消息 | 组成员可以通过 IM SDK 接口发送消息。App 管理员无需加入群组,即可调用 RESTful API 在任意群组中发送消息。 | 群成员在群内发送消息,App 管理员向任意群组发送消息 | +| 群组消息离线推送 | 支持苹果、华为、荣耀、OPPO、vivo、小米、魅族等品牌设备的离线推送 | 群组消息离线推送 | +| 接收群组在线消息 | 群成员可以通过 IM SDK 接收群组在线消息 | 在线群成员实时接收群消息 | +| 群组成员获取离线/历史消息 | 群成员通过 IM SDK 接口查询历史消息 | 群组成员上线接收离线消息,群成员查看群聊天记录 | +| App server 获取群组消息 |
- App 管理员可通过 RESTful API 下载 App 在某一段时间内产生所有的消息;
- App 管理员通过 RESTful API,获取任意群的聊天记录;
- App server 可以通过群组发消息回调,实时获取群消息。 |
- App 定期备份消息记录;
- App 需要获取某个群组历史消息;
- App 需要实时获取群组消息 | +| 消息删除 | 可通过调用 RESTful API 或 SDK API 删除历史消息 |
- 避免恶意信息传播
- 保护隐私
- 管理存储空间 | +| 群聊消息中携带发送者资料 | 通过消息扩展字段在群消息中携带发送者的昵称、头像、用户或群组相关的自定义字段 | 展示消息发送方昵称、头像等用户信息 | +| 群消息发送控制 | 通过禁言、封禁群组、群消息发送前回调、黑名单、内容审核进行发送控制。 |
- 禁止群内某个成员发送消息
- 禁止群组内所有成员在该群内发消息
- App server 过滤或修改消息 | +| 群消息接收控制 |
- 用户可通过 SDK API 屏蔽某个群组的消息
- 封禁群组 (RESTful)|
- 用户不再接收某个群组的消息
- 禁用群组中所有成员在该群内发送和接收消息 | +| 群消息频率控制 |
对于单个 app,RESTful API 存在以下 3 个限制:
- 20 条/秒/App Key
- 20 次/秒
- 3 个群/次。| 避免 RESTful API 调用过于频繁,如要上调这些限制,需联系商务。 | + +## 群组消息发送控制 + +| 群组消息发送控制 | 描述 | +| :--------- | :----- | +| 禁止发送消息 | - **黑名单**:成员加入黑名单后,会被移出群组,无法再收发消息。
- **禁言**:成员被加入禁言列表后,将无法在群组内发送消息,即使其被加入白名单也不能发消息,但可以正常接收消息。**全员禁言**开启后,除了在白名单中的成员,其他成员不能发消息。
- **全局禁言 (RESTful API)**:用户被全局禁言后,无法发送单聊消息、或在无法在所有群组或聊天室中发送消息。群组或聊天室白名单中的成员被全局禁言后,仍无法在所有单聊、群组或聊天室中发消息。| +|对消息放行或拦截|- **发送前回调**:环信 IM 服务器会在发送消息之前,向你的应用服务器发送请求,你可以根据业务需求配置规则决定下发或拦截消息。
- **内容审核**:基于内容审核结果对消息进行处理,包括拦截、替换敏感信息和放行消息。该服务只对文本、图片、音频和视频消息有效。 | + +## 群组消息频率控制 + +- REST API + + 对于单个 app,发送群聊消息 RESTful API 存在以下限制(你可以联系环信商务上调限制): + - 3 个群/次 + - 20 条/秒/App Key: 每秒最多可向群组发送 20 条消息。例如,你每次向 3 个群组发送消息,即发送了 3 条消息,你每秒最多可调用 7 次。第 8 次调用时,则报 403 错误。 + - 20 次/秒:每秒最多可调用 20 次该 API。例如,你每次调用该 API 向单个或多个群组发送消息,可调用 20 次。第 21 次调用时会报 429 错误。 + +- SDK + + 默认情况下,SDK 对单个用户发送消息的频率未做限制。如果你联系了环信商务设置了该限制,一旦在群聊中单个用户的消息发送频率超过设定的上限,SDK 会上报错误,例如 Android 端的错误码为 509 `MESSAGE_CURRENT_LIMITING`。 + +## 消息格式 + +关于各类型消息格式以及离线推送的消息扩展字段,详见[消息格式文档](product_message_format.html)。 + + + diff --git a/docs/product/message_single_chat.md b/docs/product/message_single_chat.md new file mode 100644 index 000000000..459a7faf4 --- /dev/null +++ b/docs/product/message_single_chat.md @@ -0,0 +1,64 @@ +# 单聊消息 + +## 应用场景 + +- App 内一对一聊天:两个用户进行一对一私聊。 +- App 管理员向用户发消息:App 管理员调用 RESTful API 向 app 用户发送消息,也可以其他用户的身份发送消息。 +- 向单个用户发送系统通知:TODO:是否需要删除? + +## 单聊消息类型 + +| 类型
| 描述 | +| :------------- | :----------------------------------------------------------- | +| 文本消息 | 文本消息的内容是文本,包含超链接和表情符号等。表情消息基于文本消息实现。
文本消息大小限制为 5 KB。 | +| 位置消息 | 位置消息需要第三方的地图服务提供经纬度信息。接收方接收到位置消息,通过经纬度信息可以在第三方的地图服务中显示位置。 | +| 透传消息 | 透传消息可视为命令消息。通过发送这条命令给对方,通知对方要执行的操作,对方收到消息后系统可以自定义处理。透传消息不会在 UI 上展示。
消息大小限制为 5 KB。
你可以使用透传消息更新头像和昵称以及进行状态同步等。
透传消息不会存入本地数据库。 | +| 图片消息 | 图片消息是附件消息,需要先将图片上传至消息服务器。接收方收到图片时自动下载图片缩略图。
图片默认不能超过 10 MB,图片消息大小限制为 5 KB。 | +| 语音消息 | 语音消息是附件消息,需要先将语音上传至消息服务器。接收方收到语音时自动下载语音。
音频文件默认不能超过 10 MB,音频消息大小限制为 5 KB。 | +| 视频消息 | 视频消息是附件消息,需要先将视频上传至消息服务器。接收方收到视频时自动下载视频缩略图,点击下载视频消息。对于 Web 端,视频消息没有缩略图。
视频文件默认不能超过 10 MB,视频消息大小限制为 5 KB。 | +| 文件消息 | 文件消息是附件消息,需要先将文件上传至消息服务器。
附件大小不能超过 10 MB,文件消息大小限制为 5 KB。 | +| 自定义消息 | 开发者自定义的消息类型。自定义消息支持设置类型名称,开发者可以添加多种自定义消息。
自定义消息大小限制为 5 KB。
自定义消息的使用场景:红包消息、模板消息等。 | + +:::tip +1. 默认情况下,消息附件,例如图片、音频、视频和其他文件不能超过 10 MB,可存储 7 天。若要提升其中一个上限,请联系商务。 +2. 当基础的消息类型不满足需求时,可以使用消息自定义扩展增强基础消息类型,典型的用例是发送引用较早文本或图像消息的消息。使用扩展后,消息大小不能超过原类型消息的大小。 +::: + +## 单聊消息发送控制 + +| 单聊消息发送控制 | 描述 | +| :--------- | :----- | +| 陌生人之间发送消息 | App 内任意两个用户之间均可发送单聊消息。该场景下,在环信即时通讯控制台的**即时通讯 > 服务概览**页面的**设置**区域下关闭了**好友关系检查**功能。 | +| App 管理员发送单聊消息 | App 管理员模拟其他用户向 app 内任意用户发送消息。 | +| 只给好友发送消息 | 只能给好友发送消息,即在环信即时通讯控制台的**即时通讯 > 服务概览**页面的**设置**区域下打开**好友关系检查**功能。 | +| 拒绝来自某用户的消息 | 可通过以下两种方法拒绝来自某个用户的消息:
- **将用户添加到黑名单**,拒绝来自该用户的消息。
- **将该用户从联系人列表移除。** 这种情况适用于 app 仅支持好友之间发送消息的情况。如果 app 支持陌生人之间发送消息,例如,用户 A 从用户 B 的联系人列表移除,用户 A 仍然可以向用户 B 发送消息吧。
- **全局禁言 (RESTful API)**:可通过对单个用户进行单聊全局禁言,使指定用户无法向 app 内的任何用户发送单聊消息。| +|对消息放行或拦截|- **发送前回调**:环信 IM 服务器会在发送消息之前,向你的应用服务器发送请求,你可以根据业务需求配置规则决定下发或拦截消息。
- **内容审核**:基于内容审核结果对消息进行处理,包括拦截、替换敏感信息和放行消息。该服务只对文本、图片、音频和视频消息有效。 | + +## 单聊消息发送频率限制 + +- REST API + + 对于单个 app,发送单聊消息 REST API 默认存在以下限制(你可以联系环信商务上调限制): + - 100 次/秒/App Key。若超限,提示 429 错误。 + - 6000 条/分钟。若超限报 403 错误,即 “Forbidden for url: [XXXX/XXXX/messages/users]”。 + - 600 人/次。例如,一次向 600 人发消息,视为 600 条消息。若超限,报 400 错误,即 “params to's size can't exceed limit”。 + +- SDK + + 默认情况下,SDK 对单个用户发送消息的频率未做限制。如果你联系了环信商务设置了该限制,一旦在单聊中单个用户的消息发送频率超过设定的上限,SDK 会上报错误,例如 Android 端的错误码为 509 `MESSAGE_CURRENT_LIMITING`。 + +## 单聊消息扩展能力 + +| 单聊消息扩展能力 | 功能描述 | 应用场景 | +| :--------- | :----- |:----- | +| 获取聊天记录 | 可通过 SDK 或 REST API 获取历史消息 |
- 获取实时聊天记录
- 定期下载消息记录 | +| 多终端同步 | 支持单聊消息多终端同步 | 用户多终端消息同步 | +| 单聊消息离线推送 | 支持苹果、华为、荣耀、OPPO、vivo、小米、和魅族等品牌设备的离线推送 | 消息离线推送 | +| 单聊消息中携带发送者资料 | 通过消息扩展字段实现消息中携带发送者资料 | 展示发送者昵称、头像等 | + +## 消息格式 + +关于各类型消息格式以及离线推送的消息扩展字段,详见[消息格式文档](product_message_format.html)。 + + + diff --git a/docs/product/message_store.md b/docs/product/message_store.md new file mode 100644 index 000000000..b54a084b1 --- /dev/null +++ b/docs/product/message_store.md @@ -0,0 +1,29 @@ +# 消息存储 + +消息存储分为本地存储和服务器存储。例如,客户端 A 向客户端 B 发送消息,客户端 A 发送消息到环信服务器的同时,SDK 会保存这条消息到本地数据库(SDK 内部创建数据库,不允许直接操作),环信服务器将消息发送到客户端 B 的同时也会进行记录,客户端 B 收到消息后,SDK 会将消息存储到本地数据库。 + +## SDK 存储 + +SDK 内部使用 SQLite 保存本地消息,你可以获取或删除本地消息。 + +:::tip +Web 和小程序端无本地消息存储。 +::: + +## 服务端存储 + +### 历史消息存储 + +历史消息在服务器上的存储时间与你订阅的套餐包有关,详见[产品价格](/product/pricing.html#套餐包功能详情)。环信即时通讯 IM 提供消息漫游功能,即将用户的所有会话的历史消息保存在消息服务器,用户在任何一个终端设备上都能获取到历史信息,使用户在多个设备切换使用的情况下也能保持一致的会话场景。默认可获取单聊和群组聊天的历史消息。**若要获取聊天室的历史消息,需联系环信商务**。 + +### 消息附件的存储 + +默认情况下,消息附件可在服务器存储 **7** 天。若要提升该限制,你需要联系商务。消息附件的大小及存储时间限制与群组共享文件的相同。如果消息附件的其中一个限制进行了上调,群组共享文件的对应限制也会随之自动调整,反之亦然。 + +### 离线消息存储 + +对于单聊和群聊,离线消息默认保存 **7** 天。对于每个终端用户,所有的单聊会话可存储 500 条离线消息,所有的群聊会话可存储 200 条离线消息。若超过存储天数和条数的上限,最新的离线消息会挤掉最早的。如需提升上限,可联系商务。 + +### 事件通知存储 + +各类事件通知的存储时间与历史消息的存储一致。 \ No newline at end of file diff --git a/docs/product/pricing_method.md b/docs/product/pricing_method.md new file mode 100644 index 000000000..97698ee62 --- /dev/null +++ b/docs/product/pricing_method.md @@ -0,0 +1,63 @@ +# 购买指引 + +本文介绍如何订阅、升级和续费套餐包以及如何订阅增值服务。 + +## 套餐包管理 + +### 订阅套餐包 + +使用即时通讯服务前,你可以在[环信控制台](https://console.easemob.com/user/login)订阅即时通讯套餐包。**成功订阅的当天开始计费**。 + +你可以参考如下步骤订阅即时通讯套餐包: + +1. 登录[环信控制台](https://console.easemob.com/user/login),在 **应用列表** 区域,选择你的应用,点击 **操作** 栏中的 **管理** 链接。 +2. 在左侧导航栏,选择 **即时通讯** > **功能配置** > **版本开通**。 +3. 选择套餐包,点击 **立即开通**。 +4. 进入 **即时通讯IM 服务版本** 页面,查看套餐包的功能详情,选择 **我已阅读并同意《环信云服务购买协议》**,然后点击 **提交订单** 完成支付。 + +### 升级套餐包 + +你可以在环信控制台升级套餐包。升级成功后的当天开始按新版本计费,自动为你退还原套餐的剩余费用。 + +你可以通过以下两种方式升级套餐包: + +**方法一** + +1. 登录[环信控制台](https://console.easemob.com/user/login),选择 **即时通讯** > **服务概览**,点击 **服务版本** 区域的 **当前版本** 对应的 **升级版本**,进入**即时通讯IM 服务版本** 页面。 + +2. 查看各套餐包的功能详情,根据业务需要选择套餐包,选择 **我已阅读并同意《环信云服务购买协议》**,点击 **提交订单**,完成支付。 + +**方法二** + +1. 在[环信控制台](https://console.easemob.com/user/login),选择 **即时通讯** > **功能配置** > **功能配置总览**。 +2. 点击对应功能的 **操作** 一栏的 **升级**,进入**即时通讯IM 服务版本** 页面。 +3. 查看各套餐包的功能详情,根据业务需要选择套餐包,选择 **我已阅读并同意《环信云服务购买协议》**,点击 **提交订单**,完成支付。 + +:::tip +1. 原版本下订阅的所有增值服务会同时取消订阅并退还剩余费用。若你仍需要增值服务,请重新订阅。 +2. 如果需降级或取消套餐包服务,请联系环信商务。 +3. 套餐包降级时,目标版本不包含的功能会关闭。某些功能,例如回调,在关闭后会导致数据清除,无法恢复。 +::: + +### 续费套餐包 + +所有版本的即时通讯套餐包均默认自动续订。套餐包到期时,你也可以在环信控制台重新下单[订阅同版本或其他版本套餐](#订阅套餐包)。环信控制台暂不支持多笔订单订阅时长叠加。若你在套餐包未到期时创建了新订单,系统将自动为你关闭旧服务订单并退还剩余费用。 + +## 订阅增值服务 + +消息回调、全局禁言、用户在线状态订阅(Presence)、消息表情等服务为增值服务。你可以通过以下两种方法订阅增值服务: + +**方法一** + +[订阅套餐包](#订阅套餐包)时,你可以在 **即时通讯IM 服务版本** 页面下的相应套餐标签页的 **可选增值服务** 区域选择所需增值服务进行订阅。 + +**方法二** + +参考以下步骤订阅增值服务: + +1. 选择 **即时通讯** > **功能配置** > **功能配置总览**,选择要开通的服务,点击 **操作栏** 中的 **增值服务** 链接。 + +2. 进入 **即时通讯IM 服务版本**页面下的 **单独购买增值服务** 标签页,选择增值服务对应的 **付费开通** 按钮或所需服务项目,确定购买时长,然后选择 **我已阅读并同意《环信云服务购买协议》**。 + +3. 点击 **提交订单**,完成支付。 + diff --git a/docs/product/pricing_policy.md b/docs/product/pricing_policy.md new file mode 100644 index 000000000..3e3c19013 --- /dev/null +++ b/docs/product/pricing_policy.md @@ -0,0 +1,116 @@ +# 计费策略 + + + +当你在应用中使用环信 IM 服务,环信会收取费用,按月发布账单,进行扣款。 + +- 如果你使用中国数据中心,请参考本文的计费说明。 +- 如果你使用境外数据中心,请咨询环信商务。 + +## 计费方式 + +即时通讯 IM 目前采用如下计费方式: +- 预付费:按周期购买,提交订单时一次性预付。 +- 后付费:按自然月结算,每月 1 日扣除上一个自然月所产生的费用。 + +## 计费组成 + +即时通讯 IM 的费用由**基础服务费用**和**增值服务费用**组成。 + +### 基础服务费用 + +基础服务费用包含:**套餐包费用**和**套餐包外超量费用**。 +- **套餐包费用**:IM 套餐包分为免费版、专业版和旗舰版。创建应用后默认为免费版,你可以根据业务需求进行选择。各版本包含的功能与限制,详见[套餐包功能详情](#套餐包功能详情)。 +- **套餐包外超量费用**:超出套餐包免费额度以外的 DAU 和群组和聊天室总数上限所需支付的费用。 + +:::tip +每个套餐包仅对单个 App Key 生效。 +::: + +具体计费和价格如下表所示: + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

计费项

+
+

计费方式

+
+

专业版

+
+

旗舰版

+
+

套餐包费用

+
+

预付费

+
+

1299 元/月

+
+

2999 元/月

+
+

套餐外超量费用

+
+

峰值日活 DAU(按月)

+
+

后付费

+
+

1000元/1万个,不足1万的部分按1万计算。

+
+

峰值群组和聊天室总数(按月)

+
+

100 元/1万个,不足1万的部分按1万计算。

+
+ +以下为计费示例: + +某用户订阅的即时通讯的套餐包为专业版,应用的当月最高 DAU 为 15,000,峰值群组和聊天室数为 110,000 个(免费额度为 100,000), 当月即时通讯服务费用为 1299 + 1000 + 100 = 2399 元。 + +### 增值服务费用 + +每一项增值服务都有独立的计费规则,使用下列增值服务产生的费用即为增值服务费用。 + +仅专业版和旗舰版支持订阅增值服务。 + +| 增值服务项 | 说明 | 计费方式 | 专业版 | 旗舰版 | +| :------------ | :----- | :------- | :------------ | :------------ | +| 消息云存储 | 包含历史消息记录文件和漫游消息 | 预付费 | 每延长 30 天,500 元/月 | 每延长 30 天,500元/月 | +| 扩展单个群成员数上限 | 对单个 App Key 内的所有群组生效 | 预付费 | 3000 人/群,500 元/月 | 8000 人/群,500 元/月 | +| 扩展单个用户可加入群组数上限 | 对单个 App Key 内的所有用户生效 | 预付费 | 2000 群/人:1000 元/月 | 5000 群/人:1000 元/月 | +| 群聊消息已读回执 | 功能介绍详见[群聊消息已读回执](/document/android/message_receipt.html#群聊)。 | 预付费 | 1000 元/月 | — | +| 全局禁言 | 功能介绍详见[全局禁言](/document/server-side/user_global_mute.html)。 | 预付费 | 500 元/月 | — | +| 回调 | 功能介绍详见[回调](/document/server-side/callback_overview.html)。 | 预付费 | 1000 元/月 | — | +| 回调异常缓存 | 功能介绍详见[补发回调存储信息接口描述](/document/server-side/callback_postsending.html#补发回调存储信息)。 | 预付费 | 2000 元/月 | 2000 元/月 | +| 用户在线状态(Presence)订阅 | 功能介绍详见[用户在线状态订阅](/document/server-side/presence.html)。 | 预付费 | 1000 元/月 | — | +| 消息表情回复 Reaction | 功能介绍详见[消息表情回复](/document/server-side/reaction.html)。 | 预付费 | 600 元/月 | — | +| 子区 Thread | 功能介绍详见[管理子区](/document/server-side/group_thread.html#管理子区)。 | 预付费 | 600 元/月 | — | +| 消息举报 | 功能介绍详见[消息举报](/document/android/moderation.html)。 | 预付费 | 500 元/月 | — | +| 消息人工审核 | 功能介绍详见[消息人工审核](https://docs-im.easemob.com/ccim/moderation/censor)。 | 预付费 |1000 元/月 | 1000 元/月 | +| 质量监控 | 功能介绍详见[请求质量](request_quality_overview.html)。 | 预付费 | 2000 元/月 | 2000 元/月 | + +:::tip +1. 翻译功能的价格请咨询环信商务。 +2. 内容审核功能的价格详见[内容审核计费说明](https://docs-im.easemob.com/ccim/moderation/price_domestic)。 +::: \ No newline at end of file diff --git a/docs/product/product_function.md b/docs/product/product_function.md index f47f3b77d..425a849ef 100644 --- a/docs/product/product_function.md +++ b/docs/product/product_function.md @@ -1,62 +1,80 @@ # 即时通讯 IM 主要功能 -环信即时通讯 MI 支持单聊、群聊、聊天室和超级社区会话。本文展示各类会话的主要功能、用户管理功能、离线推送和内容审核功能。 +环信即时通讯 IM 支持消息管理、用户管理功能、离线推送和内容审核功能。 -## 单聊会话 +## 多平台支持 -单聊会话指两个用户一对一聊天。默认情况下,环信即时通讯 IM 支持两个陌生人进行聊天,即发送消息时不会验证是否为好友。即时通讯 IM 会建立会话,用户离线时会收到推送通知(若集成了第三方离线推送服务)。 +环信即时通讯 IM 支持 Android、iOS、Web 等平台,而且各平台之间可互通。下表为即时通讯支持的各平台版本: -### 消息相关 +| 平台 | SDK 支持的版本 | Demo | 源码 | 单群聊 UIKit | 聊天室 UIKit | +| ------------ | ------- | ------- | ------- | ------- | ------- | +| Android | Android 5.0 或以上版本(API 级别 21 或以上) | 支持 | - | 支持 | 支持 | +| iOS | iOS 10.0 或以上版本 | 支持 | - | 支持 | 支持 | +| Web |
- Internet Explorer 9 或以上
- FireFox 10 或以上
- Chrome 54 或以上 Safari 6 或以上
- Edge 12 或以上
- Opera 58 或以上
- iOS Safari 7 或以上
- Android Browser 4.4 (KitKat) 或以上 | 支持 | - | 支持 | 支持 | +| 小程序 | 支持 | 支持 | - | - | - | +| uni-app | 支持 | - | - | 支持 | - | +| HarmonyOS | HarmonyOS NEXT(API 级别 12 或以上) | 支持 | - | - | - | +| Flutter | Flutter 2.10 | 支持 | - | 支持 | 支持 | +| React Native | React Native 0.63.4 或以上版本 | 支持 | - | 支持 | 支持 | +| Unity | Unity 2017 或以上版本 | 支持 | - | - | - | +| Windows | Windows 10 或以上版本 | 支持 | - | - | - | +| Electron | 支持 | - | - | - | - | +| Linux | 支持 | - | - | - | - | -| 功能 | 描述 | -| :------------- | :---------------------- | -| 发送和接收消息 | 发送和接收各类消息,包括文本、图片、音频、视频、文件消息、位置消息、命令消息、自定义消息以及合并消息。 | -| 本地存储 | 接收的消息存储在本地。 | -| 历史消息 | 环信服务器可存储消息。消息存储时间与你的产品套餐包相关,详见[产品价格](https://www.easemob.com/pricing/im)。 | -| 离线消息推送 |
- 用户离线时,可向消息接收方发送推送通知。
- 支持离线消息存储,默认为 7 天。 | -| 搜索消息 | 按照关键字搜索本地会话中的各类消息。 | -| 消息撤回 | 撤回发送成功的消息。默认可撤回发出 2 分钟内的消息。你可以在环信即时通讯云控制台设置消息撤回时长,该时长不超过 7 天。 | -| 消息回执 | 消息送达回执和消息已读回执。 | -| 修改消息 | 编辑发送成功的消息。 | -| 表情回复 | 对消息添加、删除表情。 | -| 合并消息 | 将多个消息合并在一起进行转发。 | -| 导入和插入消息 | 在本地导入和插入消息。 | -| 删除消息 | 单向删除服务端和本地的历史消息、清除聊天记录。 | -| 置顶消息 | 置顶、取消置顶消息和获取置顶消息。 | -| 翻译消息 | 对文本消息按需翻译和自动翻译 | -| 只投在线用户 | 只将消息投递给在线用户。 | -| 消息审核(举报) | 举报违规消息。 | -| 获取消息流量统计 | 本地消息的流量统计 | +## 全球接入 -### 会话相关 +// TODO:下图是腾讯云的,需要改成环信的 -| 功能 | 描述 | -| :-------------- | :----- | -| 会话列表 | 从服务器或本地获取会话列表。 | -| 会话免打扰 | 可设置指定单聊会话,收到新消息后是否提醒。 | -| 会话已读回执 | 接收方阅读会话中的所有消息后向服务器发送会话已读回执。 | -| 会话未读数 | 获取和清零单聊会话的未读消息数。 | -| 会话置顶 | 将单聊会话固定在会话列表的顶部。 | -| 会话标记 | 对单聊会话添加标记。 | -| 会话删除 | 删除单聊会话。 | +| 功能类型 | 功能描述 | +| ------------ | ------------------------------------------------------------ | +| 全球接入简介 | 即时通信 IM 提供覆盖全球的高连通、高可靠、强安全的网络连接通道,自研多重最优寻址算法,具有全网调度能力,终端在境外登录时,IM SDK 会访问就近接入点或加速点 | +| 中国 | 华南、华北、华东、中国香港、中国台湾等 | +| 境外 | 亚洲:日本、韩国、新加坡、泰国、马来西亚、越南、菲律宾、阿联酋、印度尼西亚欧洲:德国、英国、法国、意大利、挪威、西班牙、荷兰北美洲:美国、加拿大、墨西哥南美洲:巴西大洋洲:澳大利亚非洲:南非、尼日利亚等 | -### 用户关系 +## 账号功能 -环信即时通信 IM 默认支持陌生人之间发送单聊消息,即无需添加好友即可聊天。若仅允许好友之间发送单聊消息,你需要在[环信即时通讯云控制台](https://console.easemob.com/user/login)[开启好友关系检查](/product/enable_and_configure_IM.html#好友关系检查)。 +通过调用 RESTful API,可进行如下用户账号操作: -| 功能 | 描述 | -| :-------------- | :----- | -| 添加好友 | 发送、接收和处理好友请求。 | -| 移除好友 | 移除好友。 | -| 设置好友备注 | 设置单个好友的备注。 | -| 获取好友列表 | 从服务端或本地获取好友列表。 | -| 单聊黑名单 | 若不希望收到特定用户的消息,可将其加入到黑名单。可以将任何用户加入黑名单,不论该用户与你是否是好友关系。用户被加入黑名单后,仍在好友列表上显示,无法向你发送消息,也无法发送好友申请。 | +| 功能 | 描述 | +| :----------------- | :---------------------- | +| 注册用户 | 单次请求最多可注册 60 个用户 ID。 | +| 获取用户详情 | 用户名称、创建时间以及推送设置等。 | +| 删除用户账号 | 删除某个 App 下指定数量的用户账号。 | +| 修改用户密码 | 修改用户的登录密码,不需要提供原密码。 | +| 封禁/解禁用户 | 禁用用户,使其立即下线并无法登录进入环信即时通讯 IM,直到被解禁后才能恢复登录。 | +| 强制用户下线 | 将用户状态改为离线,用户需要重新登录才能正常使用。 | +| 获取用户在线状态 | 查看单个用户是在线还是离线状态。 | +| 获取指定账号的在线登录设备列表 | 获取指定账号的在线登录设备列表。 | + +## 单端/多端登录 + +| 功能 | 描述 | +| :----------------- | :---------------------- | +| 单平台登录 | Android、iPhone、iPad、HarmonyOS、Windows、Mac、Web 仅可有1种平台在线。 | +| 多平台登录 | 每端默认最多支持 4 个设备同时在线。 | + +使用多端登录前,你需要在[环信即时通讯控制台](https://console.easemob.com/user/login)的 **即时通讯** > **功能配置** > **功能配置总览** > **基础功能** 页面上查找 **多端多设备在线**,开启该功能。此外,可以在 **基础功能**页签下点击 **多端多设备在线** 操作栏中的 **设置**,在弹出的对话框中设置各端设备的数量。 -## 群组会话 +## 消息类型 + +| 类型
| 描述 | +| :------------- | :----------------------------------------------------------- | +| 文本消息 | 文本消息的内容是文本,包含超链接和表情符号等。| +| 位置消息 | 消息内容为经纬度信息。 | +| 图片消息 | 消息内容为图片大小和 URL 地址等。
图片默认不能超过 10 MB。 | +| 语音消息 | 语音消息需要提供时长(单位为秒)和语音文件路径。
音频文件默认不能超过 10 MB。 | +| 视频消息 | 视频消息需要提供时长(单位为秒)、视频文件路径以及缩略图路径等信息。
视频文件默认不能超过 10 MB。 | +| 文件消息 | 文件消息需要提供文件 URL 地址和文件名等信息
附件大小不能超过 10 MB。 | +| 命令消息 | 通过发送命令给对方,通知对方要执行的操作,对方收到消息后系统可以自定义处理。
透传消息不会在 UI 上展示,也不存入本地数据库。 | +| 自定义消息 | 自定义消息类型,例如,红包消息、模板消息等。 | +| 合并消息 | 将多条消息合并成一条消息。一条合并消息最多包含 300 个原始消息。| -群组是支持多人沟通的即时通讯系统,成员关系相对稳定。所有群成员可以收到群中的消息,可以在群中发送消息。群成员离线时可以收到推送消息。群组成员支持多种角色:群主、群管理员和普通成员。群组提供丰富的管理能力,如群组禁言、群公告和群文件等。 +:::tip +1. 各类消息大小不能超过 5 KB。 +2. 支持消息扩展字段,传递自定义内容,例如,消息中需要携带被回复的消息内容或者是图文消息等场景。 +::: -### 消息相关 +## 消息功能 | 功能 | 描述 | | :------------- | :---------------------- | @@ -64,13 +82,15 @@ | 本地存储 | 接收的消息存储在本地。 | | 历史消息 | 环信服务器可存储消息。消息存储时间与你的产品套餐包相关,详见[产品价格](https://www.easemob.com/pricing/im)。 | | 离线消息推送 |
- 用户离线时,可向消息接收方发送推送通知。
- 支持离线消息存储,默认为 7 天。 | -| 搜索消息 | 按照关键字搜索本地会话中的各类消息。 | +| 多端同步 | 多端多设备消息同步,同时收到消息。 | +| 本地搜索 | 按照关键字搜索本地会话中的各类消息。 | | 消息撤回 | 撤回发送成功的消息。默认可撤回发出 2 分钟内的消息。你可以在环信即时通讯云控制台设置消息撤回时长,该时长不超过 7 天。 | | 消息回执 | 消息送达回执和消息已读回执。 | | 修改消息 | 编辑发送成功的消息。 | | 表情回复 | 对消息添加、删除表情。 | -| 定向消息 | 只向群组的单个或多个指定的成员发送消息,其他成员不会收到该消息。| -| 合并消息 | 将多个消息合并在一起进行转发。 | +| 定向消息 | 指向群组或聊天室的单个或多个指定的成员发送消息,其他成员不会收到该消息。 | +| 全局广播 | 向 app 所有用户或聊天室发送广播消息。 | +| 正在输入 | 可通过透传消息实现。 | | 导入和插入消息 | 在本地导入和插入消息。 | | 删除消息 | 单向删除服务端和本地的历史消息、清除聊天记录。 | | 置顶消息 | 置顶、取消置顶消息和获取置顶消息。 | @@ -79,11 +99,7 @@ | 消息审核(举报) | 举报违规消息。 | | 获取消息流量统计 | 本地消息的流量统计 | -:::tip -在消息方面,群聊会话与单聊会话的区别在于群聊支持定向消息。 -::: - -### 会话相关 +## 会话相关 | 功能 | 描述 | | :-------------- | :----- | @@ -95,241 +111,7 @@ | 会话标记 | 对群聊会话添加标记。 | | 会话删除 | 删除群聊会话。 | -### 创建和管理群组 - -| 功能 | 描述 | -| :----------------- | :---------------------- | -| 创建群组 | 任何用户均可创建群组。群组创建者为群主。。 | -| 解散群组 | 只有群主才能解散群组。| -| 封禁/解禁群组 | 对群组封禁和解禁。| -| 屏蔽和解除屏蔽群消息 | 所有群组成员都可以屏蔽(不收群组消息)和取消屏蔽群组消息。| - -### 查询群组信息 - -| 功能 | 描述 | -| :----------------- | :---------------------- | -| 获取群组详情 | 群成员可以从内存获取群组详情,例如群组 ID、群组名称、群组描述。| -| 修改群组详情 | 修改群组详情,例如群组名称、描述和扩展信息。 | -| 获取群成员列表 | 从服务器获取群组成员的分页列表。 | -| 获取 app 中的群组列表 | 调用 REST API 分页获取应用下的群组的信息。 | -| 获取群组列表 | 用户可以获取公开群列表和自己创建或加入的群组列表。 | -| 查询当前用户已加入的群组数量 | 用户可以从服务器获取当前用户已加入的群组数量。 | -| 获取单个用户加入的所有群组 | 调用 REST API 根据用户 ID 分页获取指定用户加入的所有群组。 | -| 查看指定用户是否已加入群组 | 调用 REST API 查看单个用户是否已加入了指定的群组。 | - -### 群属性管理 - -| 功能 | 描述 | -| :--------------- | :----------------------------------------------------------- | -| 修改群组信息 | 群主和群管理员可修改群名称、描述和扩展字段。 | -| 修改/获取群公告 | 群主和群管理员可设置群公告,群成员可获取群公告。 | -| 管理共享文件 | 群主和群管理员可上传文件并删除所有群共享文件,群成员只能删除自己上传的文件。| - -### 群成员管理 - -| 功能 | 描述 | -| :--------------------- | :----------------------------------------------------------- | -| 加入群组 |
- 对于公开群和私有群,群主和管理员均可以邀请用户加入群。
- 对于公开群,用户也可以申请加入。| -| 退出群组 | 主动退群和被群主或群管理员踢出群。
群主不支持退群操作,只能解散群。 | -| 变更群主 | 群主可以将群组的所有权转让给指定的组成员。| -| 添加/移除/获取群管理员 | 群主可以添加成员到群组管理员列表,将管理员移出该列表。| -| 群组白名单 | 群主和管理员可以将群成员加入或移出白名单。
白名单成员可在全员禁言状态下发送群消息。 | -| 群组黑名单 | 群主和群管理员可以将群成员加入或移出黑名单。
黑名单中的成员将被移出群且无法再次加入群。 | -| 群组禁言 | - 群主和管理员可以将群成员加入或移出禁言列表,禁言列表中的成员无法发送群消息,但可以接收群消息。
- 支持开启或关闭全员禁言。| -| 管理群成员的自定义属性 | 支持设置群成员自定义属性和获取单个群成员的自定义属性,例如设置群组昵称和头像等。
群主可修改所有群成员的自定义属性,其他群成员只能修改自己的自定义属性。 | - -### 子区(Thread) - -子区可由群成员基于一条群组消息创建,是群组的子集,该条群组消息称为子区的父消息。 - -#### 子区管理 - -| 功能 | 描述 | -| :--------- | :----- | -| 创建子区 | 所有群成员均可基于一条群组消息新建子区。 | -| 解散子区 | 仅子区所在群组的群主和群管理员可以解散子区。 | -| 加入子区 | 子区所在群组的所有成员均可以加入子区。你可以调用 REST API 批量加入子区。 | -| 退出子区 | 子区成员可主动退出子区或被群主和群管理员移除子区。 | -| 修改子区名称 | 仅群主和群管理员以及子区创建者可以修改子区名称。 | -| 获取子区详情 | 子区所属群组的所有成员均可以从服务器获取子区详情。 | -| 获取子区成员列表 | 子区所属群组的所有成员均可以从服务器分页获取子区成员列表。 | -| 获取子区列表 |
-从服务器分页获取 app 中或单个群组中自己加入和创建的子区列表。 | -| 批量获取子区中的最新消息 | 用户可以从服务器批量获取子区中的最新一条消息。 | -| 获取子区 | 获取 app 下的所有子区、单个用户加入的所有子区以及在指定群组中加入的所有子区。| - -#### 子区消息管理 - -| 功能 | 描述 | -| :--------- | :----- | -| 发送子区消息 | 发送子区消息和发送群组消息的方法基本一致。唯一不同的是,发送子区消息需要指定是否是子区的标记。| -| 接收子区消息 | 接收子区消息与接收单聊、群聊和聊天室相同。 | -| 撤回子区消息 | 撤回子区消息的逻辑与撤回单聊、群聊和聊天室相同。| -| 获取子区消息 | 从服务器或本地获取单个子区的消息。 | - -## 聊天室会话 - -聊天室是支持多人加入的类似 Twitch 的组织,可以应用于直播、消息广播等。聊天室中的成员没有固定关系,一旦离线后,不会收到聊天室中的任何消息。 - -聊天室成员数上限(包括聊天室所有者)默认最大值为 10,000,如需调整请联系商务。 - -### 消息相关 - -| 功能 | 描述 | -| :------------- | :---------------------- | -| 发送和接收消息 | 发送和接收各类消息,包括文本、图片、音频、视频、文件消息、位置消息、命令消息、自定义消息以及合并消息。 | -| 历史消息 | 环信服务器可存储消息。消息存储时间与你的产品套餐包相关,详见[产品价格](https://www.easemob.com/pricing/im)。要从服务器拉取聊天室的历史消息,需升级 SDK 到特定版本,并联系环信商务开通。 | -| 消息撤回 | 撤回发送成功的消息。默认可撤回发出 2 分钟内的消息。你可以在环信即时通讯云控制台设置消息撤回时长,该时长不超过 7 天。 | -| 修改消息 | 编辑发送成功的消息。 | -| 定向消息 | 只向聊天室的单个或多个指定的成员发送消息,其他成员不会收到该消息。| -| 合并消息 | 将多个消息合并在一起进行转发。 | -| 删除消息 | 单向删除服务端的历史消息、清除聊天记录。 | -| 置顶消息 | 置顶、取消置顶消息和获取置顶消息。要从服务器拉取聊天室的历史消息,需升级 SDK 到特定版本,并联系环信商务开通。 | -| 翻译消息 | 对文本消息按需翻译和自动翻译。 | -| 消息审核(举报) | 举报违规消息。 | -| 获取消息流量统计 | 本地消息的流量统计。 | - -:::tip -与单聊和群组聊天不同,聊天室不支持离线消息推送和本地消息操作。 -::: - -### 创建和管理聊天室 - -| 功能 | 描述 | -| :------------- | :----------------------------------------------------------- | -| 创建聊天室 | 只有被赋予 [超级管理员](/document/server-side/chatroom_superadmin.html) 权限的用户有权限创建聊天室。建议[调用 REST 接口创建聊天室](/document/server-side/chatroom_manage.html#创建聊天室)。 | -| 加入聊天室 | 没有被加入黑名单的所有 app 用户可自由加入聊天室。 | -| 离开聊天室 | 主动退出聊天室或被移出聊天室。 | -| 解散聊天室 | 聊天室所有者可解散聊天室。 | -| 获取聊天室详情 | 所有聊天室成员有权限获取聊天室详情,例如聊天室 ID、名称,和描述等。 | -| 实时更新聊天室成员人数 | 聊天室短时间内有成员频繁加入或退出时,可实时更新聊天室成员人数。| - -### 聊天室成员管理 - -| 功能 | 描述 | -| :----------------- | :----------------------------------------------------------- | -| 获取聊天室成员列表 | 所有聊天室成员均可获取当前聊天室成员列表。 | -| 变更聊天室所有者 | 聊天室所有者可以将聊天室的所有权转让给指定的聊天室成员。| -| 聊天室禁言列表 | 聊天室所有者或管理员可对单个聊天室成员进行禁言或移出禁言。 | -| 聊天室全员禁言 | 聊天室所有者或管理员可进行全员禁言。默认聊天室所有者和管理员不禁言。 | -| 聊天室按标签禁言(服务端)| 设置用户在聊天室中的标签,按标签对用户禁言。 | -| 聊天室白名单 | 聊天室所有者或管理员可将成员加入或移出白名单。全员禁言时,白名单的成员可以发消息。 | -| 聊天室黑名单 | 聊天室所有者或管理员可将成员加入或移出黑名单。
黑名单中的成员需要聊天室所有者主动从黑名单移除后才能再次加入聊天室。 | -| 管理聊天室管理员 | 仅聊天室所有者可添加或移除管理员。 | - -### 聊天室属性管理 - -| 功能 | 描述 | -| :----------------- | :------------ | -| 修改聊天室名称 | 仅聊天室所有者可修改聊天室名称。 | -| 获取/更新聊天室公告 | 仅聊天室所有者可更新公告、删除公告。
所有成员可获取公告。 | -| 管理聊天室自定义属性(key-value) | 设置、获取和删除以及强制设置和强制删除聊天室自定义属性。 | - -## 超级社区 - -环信超级社区(Circle)是一款基于环信 IM 打造的类 Discord 实时社区应用场景方案,支持社区(Server)、频道(Channel) 和子区(Thread) 三层结构。一个 App 下可以有多个社区,同时支持陌生人/好友单聊。用户可创建和管理自己的社区,在社区中设置和管理频道将一个话题下的子话题进行分区,在频道中根据感兴趣的某条消息发起子区讨论,实现万人实时群聊,满足超大规模用户的顺畅沟通需求。 - -### 消息相关 - -| 功能 | 描述 | -| :------------- | :---------------------- | -| 发送和接收消息 | 发送和接收各类消息,包括文本、图片、音频、视频、文件消息、位置消息、命令消息、自定义消息以及合并消息。 | -| 本地存储 | 接收的消息存储在本地。 | -| 历史消息 | 环信服务器可存储消息。消息存储时间与你的产品套餐包相关,详见[产品价格](https://www.easemob.com/pricing/im)。 | -| 搜索消息 | 按照关键字搜索本地会话中的各类消息。 | -| 消息撤回 | 撤回发送成功的消息。默认可撤回发出 2 分钟内的消息。你可以在环信即时通讯云控制台设置消息撤回时长,该时长不超过 7 天。 | -| 表情回复 | 对消息添加、删除表情。 | -| 导入和插入消息 | 在本地导入和插入消息。 | -| 删除消息 | 单向删除服务端和本地的历史消息、清除聊天记录。 | -| 翻译消息 | 对文本消息按需翻译和自动翻译 | -| 消息审核(举报) | 举报违规消息。 | - -### 社区管理 - -|功能|描述| -| :- | :- | -|创建社区|每个用户默认最多可创建 100 个社区,如需调整该阈值,请联系商务。| -|修改社区信息|社区所有者和管理员可修改社区基本信息。| -|解散社区|解散社区需要社区所有者权限。
解散社区后所有成员将收到社区解散的回调信息。| -|添加社区标签|社区所有者和管理员可以给社区增加标签,非社区内用户可以通过搜索标签找到社区。每个社区最多可添加 10 个标签。| -|移除社区标签|社区所有者和管理员可以移除社区已有标签。| -|获取社区标签列表|社区成员可获取社区标签列表。| -|获取社区详情|用户可以获取社区的详情。| -|获取已加入社区|获取用户已加入的社区列表。 | -|搜索公开社区|社区成员可以根据社区名称或标签名称搜索公开社区。 | -|分页获取社区成员列表|分页获取指定社区中的成员列表。| - -### 社区成员管理 - -|功能|描述| -| :- | :- | -|加入社区|社区分为公开和私密社区。
- 对于公开社区,用户可以通过搜索社区名称和标签的方式申请加入社区,或者由社区内成员邀请加入。
- 对于私密社区,只能通过社区内成员邀请加入。用户可以选择同意或拒绝加入社区。| -|退出社区|社区所有者不支持退出社区操作,只能解散社区。
退出社区分为主动退出和被动退出,被动退出即为被社区所有者或管理员踢出社区。社区所有者和管理员可将普通用户踢出社区,管理员只能被社区所有者踢出社区。 | -|查询当前用户是否在社区内|可判断指定用户是否已经加入了指定社区。| -|修改社区中成员角色|社区所有者可以将管理员权限赋予社区中普通用户,或移除管理员权限将其变为普通用户。| -|查询当前用户在社区内角色|社区内成员可以获取社区内用户的角色。| - -### 频道管理 - -|功能|描述| -| :- | :- | -|创建频道|社区所有者可以在社区中创建公开或私密频道。| -|修改频道信息|社区所有者和管理员可以修改频道的属性。| -|解散频道|社区所有者可以解散社区中的频道。| -|获取频道详情|社区成员可获取频道的详情。| -|获取社区的公开频道列表|社区成员可以获取社区下的所有公开频道的列表。| -|获取社区的私密频道列表|社区成员可以获取社区下的所有私密频道的列表。| -|获取社区中用户加入的频道列表|社区成员可以获取自己已经加入的频道。| -|获取频道的成员列表|频道成员可以获取该频道下的成员列表。| -|创建频道分组|社区所有者可以创建频道分组。| -|修改频道分组名称|社区所有者可修改频道分组名称。| -|获取社区下的频道分组列表|社区成员可以获取社区下的频道分组列表。| -|删除频道分组|社区所有者可以删除频道分组。| -|分页获取频道分组下的公开频道列表|社区成员可以分页获取频道分组下公开的频道列表。| -|分页获取频道分组下的私密频道列表|社区成员可以分页获取频道分组下的私密频道列表。| -|更换频道所属的频道分组|社区所有者和管理员可以将指定的频道从一个频道分组转移至另一个频道分组中。| - -### 频道成员管理 - -|功能|描述| -| :- | :- | -|加入频道|频道分为公开和私密频道。
- 对于公开频道,用户可以获取公开频道列表,然后申请加入频道,或者由频道成员邀请加入。
- 对于私密频道,只能通过频道成员邀请加入。用户可以选择同意或拒绝加入频道。| -|退出频道|退出频道分为主动退出和被动退出,被动退出即被社区所有者或管理员踢出频道。 | -|查询用户是否在频道中|查询指定用户是否在指定频道中。| -|频道禁言/解除禁言|社区所有者和社区管理员可以将频道成员加入或移出禁言列表,禁言列表中的成员无法发送频道消息,可以接收频道中的消息。| -|获取频道下的禁言列表|社区所有者和社区管理员可以获取频道下被禁言用户的列表。| - -### 子区管理 - -|功能|描述| -| :- | :- | -|创建子区|频道成员可以在频道中创建子区。| -|加入子区|频道成员可以加入频道下的子区。| -|退出子区|子区成员可以主动退出或被移出自己加入的子区。| -|删除子区|社区所有者可以删除该频道中的子区。| -|获取子区详情|频道成员可以获取子区的详情。| -|获取频道下创建的子区列表|频道成员可以获取在指定频道下创建的子区列表。| -|获取频道下加入的子区列表|频道成员可以获取频道下加入的子区。| -|获取频道的子区列表|频道成员获取频道的所有子区的列表。| -|修改子区名称|社区所有者、社区管理员和子区的创建者可以修改子区的名称。| - -## 用户相关 - -### 用户账号管理 - -通过调用 RESTful API,可进行如下用户账号操作: - -| 功能 | 描述 | -| :----------------- | :---------------------- | -| 注册用户 | 单次请求最多可注册 60 个用户 ID。 | -| 获取用户详情 | 用户名称、创建时间以及推送设置等。 | -| 删除用户账号 | 删除某个 App 下指定数量的用户账号。 | -| 修改用户密码 | 修改用户的登录密码,不需要提供原密码。 | -| 封禁/解禁用户 | 禁用用户,使其立即下线并无法登录进入环信即时通讯 IM,直到被解禁后才能恢复登录。 | -| 强制用户下线 | 将用户状态改为离线,用户需要重新登录才能正常使用。 | -| 获取用户在线状态 | 查看单个用户是在线还是离线状态。 | -| 获取指定账号的在线登录设备列表 | 获取指定账号的在线登录设备列表。 | - -### 用户属性 +## 用户属性 | 功能 | 描述 | | :----------------- | :---------------------- | @@ -338,44 +120,104 @@ | 获取 app 下用户属性总大小(仅服务端) | 获取该 app 下所有用户的属性数据大小,单位为字节。 | | 删除用户属性 | 删除单个用户的所有属性。 | -### 在线状态订阅 - -| 功能 | 描述 | -| :----------------- | :---------------------- | -| 订阅指定用户的在线状态 | 每个用户 ID 订阅的用户数不超过 3000。 | -| 发布自定义在线状态 | 发布自定义在线状态。 | -| 取消订阅指定用户的在线状态 | 不再订阅指定用户的在线状态。 | -| 查询被订阅用户列表 | 分页查询自己订阅的用户列表。 | -| 获取用户的当前在线状态 | 获取用户当前的在线状态,包括未订阅的用户的状态。 | +## 用户关系 -### 用户全局禁言 +环信即时通信 IM 默认支持陌生人之间发送单聊消息,即无需添加好友即可聊天。若仅允许好友之间发送单聊消息,你需要在[环信即时通讯云控制台](https://console.easemob.com/user/login)[开启好友关系检查](/product/enable_and_configure_IM.html#好友关系检查)。 -你可以调用 RESTful API 实现用户全局禁言: +| 功能 | 描述 | +| :-------------- | :----- | +| 添加好友 | 发送、接收和处理好友请求。 | +| 移除好友 | 移除好友。 | +| 同意/拒绝好友申请 | 收到好友请求后,可接受或拒绝。 | +| 移除好友 | 移除好友。 | +| 设置好友备注 | 设置单个好友的备注。 | +| 获取好友列表 | 从服务端或本地获取好友列表。 | +| 添加用户到黑名单 | 将用户添加至黑名单。可以将任何用户加入黑名单,不论该用户与你是否是好友关系。 | +| 将好友移除黑名单 | 将用户从黑名单移除,用户发送消息等行为将恢复。| +| 获取黑名单列表 | 从服务端获取黑名单列表。 | + +## 群组和聊天室 + +对于免费峰值群组和聊天室数,体验版支持 100 个/月,专业版 100000 个/月,旗舰版 100000 个/月。 + +| 功能 | 群组 | 聊天室 | +| :------ | :----------- | :-------- | +| 使用场景 | 类似于 Signal,Skype 里的群聊,所有加入的用户拥有固定的关系 | 类似 Twitch 的直播间,成员间没有固定关系,离开即退出 | +| 分类 | 分为公开群和私有群,创建群组时可设置入群是否需获得群主和群管理员的同意 | 没有公开和私有之分,所有用户均可自由加入或退出 | +| 群组/聊天室总数上限 |
- 体验版:100
- 专业版:无限制
- 旗舰版:无限制 |
-体验版:不支持
- 专业版:无限制
- 旗舰版:无限制 | +| 成员数上限 |
-体验版:100 人/群
- 专业版:300人/群(可调*)
- 旗舰版:3000人/群(可调*) |
-体验版:不支持
- 专业版:10,000 人/聊天室
- 旗舰版:10,000 人/聊天室 | +| 成员列表 | 所有成员均可见 | 所有成员均可见 | +| 创建 | 所有 app 用户都可以创建群组 | 仅聊天室超级管理员可在客户端创建 | +| 解散 | 群主 | 聊天室所有者 | +| 申请加入 | 支持 | 支持 | +| 加群审批 | 支持 | 支持 | +| 邀请加入 | 支持 | 不支持 | +| 群主/所有者退出 | 不支持 | 支持 | +| 设置管理员 | 支持 | 支持 | +| 移除成员 |
- 群主
- 群管理员 // TODO:是否还写 app 管理员(应该是通过 RESTful API) |
- 聊天室所有者
- 聊天室管理员 | +| 成员禁言 | 支持 | 支持 | +| 白名单 | 支持 | 支持 | +| 黑名单 | 支持 | 支持 | +| 成员变更通知 | 邀请进群/申请进群/踢人/退群,默认下发通知 | 主动离开和被踢,默认下发通知 | +| 角色变更通知 | 添加/移除群管理员,群主变更,默认下发通知 | 添加/移除聊天室管理员,聊天室所有者变更,默认下发通知 | +| 群/聊天室属性变更通知 | 群组名称、描述和公告变更时,默认下发通知 | 聊天室名称、描述和公告以及自定义属性变更时,默认下发通知 | +| 群/聊天室成员状态变更通知 | 成员被禁言和添加至黑名单或白名单、群管理员变更,默认下发通知 | 成员被禁言和添加至黑名单或白名单、聊天室管理员变更,默认下发通知 | +| 消息功能 |
- 支持消息发送、消息漫游、修改、撤回、置顶、回执、表情回复、翻译、合并、转发、只投在线用户等特性。
- 支持定向消息(仅向某个或某些成员发消息)。 |
- 支持群组消息的大部分功能(包括定向消息)。
- 要使用消息漫游,需升级 SDK 到指定版本并联系商务开通。
- 不支持消息表情回复、离线消息。 | +| 历史消息存储 | 支持 | 支持 | +| 查看漫游消息 | 默认开通 | 联系商务开通 | +| 是否支持查看加入前漫游消息 | 支持 | 支持(联系商务开通) | +| 消息未读计数 | 支持 | 不支持 | +| 默认消息接收 | 接收在线推送消息,支持离线推送 | 只接收在线消息,不支持离线推送 | +| 离线消息存储 | 支持 | 不支持 | +| 消息可靠性 | 群组中发送的所有消息,用户都会收到 | 当消息量大时,聊天室中超过阈值(每秒 100 条)的消息会被丢弃 | + +## 环信控制台 + +你可以在[环信即时通讯云控制台](https://console.easemob.com/user/login)对你的应用进行配置和管理。 + +| 功能 | 描述 | +| :------ | :----------- | +| 创建应用 | 创建你的应用 | +| 升级套餐包 | 自助开通专业版或旗舰版 IM | +| 订阅增值服务 | 开通消息回调、全局禁言等[增值服务](/product/pricing.html#增值服务费用) | +| 账户中心 | 查看订单记录和消费账单 | +| 开通功能 | 开通服务端会话列表或多端多设备等功能 | +| 服务概览 | 展示你的服务版本、域名配置等 | +| 推送配置 | 包括各厂商推送证书管理和推送模板管理 | +| 消息回调 | 发送前回调和发送后回调规则配置 | +| IP 白名单 | 允许你赋给特定 IP 地址调用 RESTful API 的权限 | +| 用户管理 | 创建、封禁、删除用户,添加好友等 | +| 群组管理 | 创建、删除群组、查看群成员和黑名单 | +| 聊天室管理 | 创建、删除聊天室,查看聊天室成员、管理员和禁言列表和黑名单等 | +| 数据统计 | 用户、群组和聊天室相关数据统计以及消息量统计 | +| 实时查询 | 实时活跃的用户数、群组数和聊天室数等,请求质量、热点数据、IM 消息投递查询等 | +| 内容审核 | 配置消息审核规则、查看审核记录、基于关键词审核等 | + +## 数据统计 -| 功能 | 描述 | -| :----------------- | :---------------------- | -| 设置用户全局禁言 | 对单个用户 ID 在所有单聊、群组或聊天室中禁言,使其无法发送消息。 | -| 查询单个用户 ID 全局禁言 | 查询单个用户的单聊、群聊和聊天室的全局禁言详情。 | -| 查询 app 下的所有全局禁言的用户 | 查询 app 下所有全局禁言的用户及其禁言剩余时间。 | +| 功能 | 描述 | +| :------------- | :---------------------- | +| 用户数据 | 用户数量统计,包括注册用户总数、今日活跃用户数、今日新增用户数 | +| 群组数据 | 群组统计,包括群组总数、活跃群组数、新增群组数、解散群组数 | +| 聊天室数据 | 聊天室统计,包括聊天室总数、活跃聊天室数、新增聊天室数、解散聊天室数、聊天室同时在线人数 | +| Server 数据 | Server 统计,包括 Server 总数、今日活跃 Server 数、今日新增 Server 数、Channel 总数,、今日新增 Channel 数 | +| 消息量统计 | 消息统计包含单聊、群聊、聊天室场景下各类消息量的总数统计和趋势分析。 | -## 离线推送 -环信即时通讯 IM 的 Android、iOS、uni-app 和 React Native SDK 支持离线推送,支持的手机厂商推送服务包括 APNs、Google FCM、华为、荣耀、小米、OPPO、VIVO 和魅族。 +## 实时查询 -| 功能 | 描述 | -| :----------------- | :---------------------- | -| 绑定和解绑推送信息 | 将设备与推送信息会进行绑定获解绑,包括设备 ID、推送证书和 device token。 | -| 设置推送标题和推送内容 | 可以通过以下方式设置推送的标题和内容:
- 调用方法设置;
- 使用推送模板
- 使用消息扩展字段 | -| 设置推送昵称 | 设置离线推送时通知栏中显示的消息发送方的昵称。 | -| 设置通知方式 | 包括三种方式:
- 接收所有离线消息的推送通知。
- 仅接收提及某些用户的消息的推送通知。
- 不接收离线消息的推送通知。 | -| 设置免打扰模式 | 设置免打扰时间段和免打扰时长。 | -| 设置推送通知的首选语言 | 若启用了翻译功能,SDK 会同时发送原始消息和翻译后的消息。如果翻译消息的语言符合你的设置,则翻译消息显示在推送通知中;否则,将显示原始消息。 | -| 设置推送扩展功能 | 利用扩展字段实现自定义推送设置,例如强制推送和发送静默消息。 | -| 查询离线推送结果统计数据 | 可以通过[环信控制台](https://console.easemob.com/user/login)查询离线推送的结果。 | +| 功能 | 描述 | +| :------------- | :---------------------- | +| 请求质量概览 | 提供质量数据的阶段性分析,帮助你掌握用量变化趋势、跟踪产品质量情况。 | +| 热点数据查询 | 提供最小以分钟粒度的TOP 50 的活跃用户、活跃群组、活跃聊天室信息。 | +| IM 消息投递查询 | 可以查询最近三天的消息投递情况。 | +| IM 用户连接状态 | 通过用户 ID 查询最近三天的历史连接状态。 | +| IM 用户设备日志 | 查询用户设备端的日志,或将设备端的日志上传到环信日志服务器。 | +| 聊天室消息速率 | 可根据聊天室 ID 查询聊天室内每分钟的消息上下行数量。 | ## 内容审核 -支持使用环信即时通讯 IM [内容审核服务](/product/moderation/moderation_overview.html)对消息内容进行多样化场景检测,帮助你对应用消息内容进行管控,规避内容违规风险。 +支持使用 IM [内容审核服务](/product/moderation/moderation_overview.html)对消息内容进行多样化场景检测,帮助你对应用消息内容进行管控,规避内容违规风险。 | 功能 | 描述 | | :------------- | :---------------------- | @@ -384,11 +226,7 @@ | 消息审核结果可回调 | 支持将消息审核结果回调至客户服务器。 | | 一站式内容审核后台 | 提供可视化的内容审核后台,支持查询审核记录、审核数据统计。 | +## 私有化 - - - - - - +环信即时通讯私有化服务是基于 IM 核心技术实现的可私有化部署解决方案。该方案可适配内网物理服务器集群、公有云以及私有云等任意部署环境,提供功能完备、安全可靠、易于扩展的即时通讯平台。更多详情,请参见[私有化服务文档](https://docs-im-privatization.easemob.com/document/v2/privatization/uc_introduction.html)。 diff --git a/docs/product/product_package_feature.md b/docs/product/product_package_feature.md new file mode 100644 index 000000000..224b1f387 --- /dev/null +++ b/docs/product/product_package_feature.md @@ -0,0 +1,78 @@ +# IM 套餐包功能对比 + +即时通信 IM 套餐包分为免费版、专业版和旗舰版。各套餐包支持的功能详情如下表所示,你可以根据业务需求选择套餐包。 + +:::tip +1. `✓` 为各版本支持的功能。订阅了相应套餐包后,可使用这些功能。 +2. `*` 为增值服务。若使用这些服务,可在环信控制台付费开通。 +::: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块功能免费版专业版旗舰版
用户免费日活跃用户数(DAU)1001000010000
注册用户总数上限100无限制无限制
单个用户的好友数上限10030003000
用户属性(提供用户头像、昵称、邮箱等数据存储服务)
用户在线状态订阅(客户端)*
多端多设备在线(支持不同设备同时在线,消息同步接收)
消息消息云存储(提供消息的存储服务,包含历史消息记录和漫游消息)3 天7 天(可调*)90 天(可调*)
全消息类型(包括:文本、表情、语音、视频、图片、位置、透传、自定义等消息)
发送全局广播消息(服务端)联系商务联系商务
离线消息(支持单聊/群聊离线消息,上线后可拉取离线消息)
单聊消息已读回执
群聊消息已读回执*
消息撤回(支持客户端/REST 消息撤回)
合并消息
定向消息(支持群组和聊天室)
消息推送
消息免打扰(在设置的免打扰时间内不收推送消息)
全平台离线推送(支持苹果、谷歌、华为、小米、OPPO、VIVO、魅族,自定义铃声和扩展)
消息表情回复 Reaction*
本地消息搜索
消息扩展
消息修改
消息置顶
消息转发
消息本地删除
消息导入和插入
消息只投在线用户
消息举报*
会话会话列表
会话已读回执
会话未读数
置顶会话
会话标记
删除会话
群组免费峰值群组和聊天室数100个/月100000个/月100000个/月
群组总数上限(解散后不计数)100无限制无限制
单个群成员数上限100人/群300人/群(可调*)3000人/群(可调*)
单个用户可加入群组数上限100个群/人600个群/人(可调*)3000个群/人(可调*)
群组管理(创建、转让、解散、封禁、获取群组信息、获取群组列表/群成员列表等)
群组白名单
群组黑名单
群组禁言
群成员属性
子区 Thread*
聊天室聊天室总数上限(支持大型直播场景)无限制无限制
聊天室消息优先级
聊天室管理(创建、解散、加入聊天室、获取聊天室详情、获取聊天室成员列表)
聊天室白名单
聊天室黑名单
聊天室禁言
聊天室基本属性和自定义属性(KV)
聊天室新成员查看加入前消息
翻译消息翻译联系商务联系商务联系商务
全局禁言支持单聊、群聊、聊天室全局范围禁言*
回调提供全量消息路由转发,支持消息、用户状态和多种事件类型*
回调异常缓存(高保障回调)**
REST API 调用频率接口调用频率可调*可调*
场景方案语聊房
超级社区(类似 Discord 的超大群)
环信 AIGC X IM(生成式人工智能一站式解决方案)
AI 会话摘要助手通过 AI 技术针对单个群组会话中一段时间内的消息内容生成会话摘要
消息审核实时消息人工审核**
内容审核(支持文本、图片、语音、视频消息的智能审核)联系商务联系商务联系商务
敏感词服务(基础词库)
说明:仅包含涉政词库,不支持配置自定义词
质量监控请求质量监控**
网络全球加速网络(SD-GMN,全球5大数据中心、200+ 边缘加速节点)
海外代理服务
diff --git "a/docs/product/\347\216\257\344\277\241\345\215\263\346\227\266\351\200\232\350\256\257 IM SDK_readme.md" "b/docs/product/\347\216\257\344\277\241\345\215\263\346\227\266\351\200\232\350\256\257 IM SDK_readme.md" new file mode 100644 index 000000000..1c22b62bb --- /dev/null +++ "b/docs/product/\347\216\257\344\277\241\345\215\263\346\227\266\351\200\232\350\256\257 IM SDK_readme.md" @@ -0,0 +1,486 @@ +# 环信即时通讯 IM Flutter SDK + +// TODO:以 Flutter 端为例进行描述 +// TODO:优化后的架构与腾讯云的主要差别在于应用场景没有配图,产品经理是否配图,如果是,需提供图。 +// TODO:产品提供一下 SDK 的说明和环信 IM 的说明。 + +环信即时通讯 IM Flutter SDK 支持丰富的消息类型、包括文本、图片、音频、视频、位置、自定义等,提供单聊、群聊和聊天室功能,轻松构建满足不同场景需求的高效沟通平台,助力用户享受流畅便捷的交流方式。 + +## 关于环信即时通讯 IM + +即时通讯 IM 为开发者提供高可靠、低时延、高并发、安全、全球化的即时聊天云服务,支持单聊、群聊、聊天室,提供多平台 SDK 支持,包括 Android、iOS、Web、Windows、Unity、Flutter、React Native 和小程序,同时提供服务端 RESTful API 以及单群聊 UIKit,帮助开发者快速构建端到端的即时通讯场景。 + +你可以登录[环信控制台](https://console.easemob.com/user/login)对环信即时通讯 IM 进行配置和管理。 + +关于环信即时通讯 IM 的更多详情,请参见[环信官网介绍](https://www.easemob.com/)。 + +## 应用场景 + +- 应用内聊天 +- 应用内通知 +- 视频/语音直播 +- 企业协作 +- 游戏交流 +- 在线教育 +- 买家卖家沟通 +- 线上问诊 + +## 快速开始 + +通过本文可以实现一个集成聊天 SDK 的简单 app。 + +### 前提条件 + +开始前,请确保你的开发环境满足如下要求: + +- Xcode 12.4 或以上版本,包括命令行工具; +- iOS 11 或以上版本; +- Android SDK API 等级 21 或以上版本; +- Android Studio 4.0 或以上版本,包括 JDK 1.8 或以上版本; +- CocoaPods 包管理工具; +- Flutter 3.3.0 或以上版本; +- Dart 3.3.0 或以上版本; + +配置开发或者运行环境如果遇到问题,请参考 [这里](https://docs.flutter.dev/get-started/install)。 + +### 项目设置 + +#### 使用命令创建项目 + +打开终端,进入需要创建项目的目录,输入命令进行 `flutter create` 项目创建: + +```bash +flutter create quick_start +``` + +#### 设置 Android + +1. 打开文件 `quick_start/android/app/build.gradle` 在文件最后添加: + +```gradle +android { + defaultConfig { + minSdkVersion 21 + } +} +``` + +2. 打开文件 `quick_start/android/app/src/main/AndroidManifest.xml`,在 `` 下添加: + +```xml + + + +``` + +3. 在 `quick_start/android/app/proguard-rules.pro` 中设置免混淆规则: + +```dart +-keep class io.agora.** {*;} +-dontwarn io.agora.** +``` + +#### 设置 iOS + +iOS 需要 iOS 11.0 以上版本, + +打开文件 `quick_start/ios/Runner.xcodeproj`,修改:`TARGETS -> General -> Deployment info`, 设置 iOS 版本为 11.0。 + +#### 集成 SDK + +在终端命令行,输入命令添加依赖: + +```bash +cd quick_start +flutter pub add shengwang_chat_sdk +flutter pub get +``` + +### 添加示例代码 + +打开 `quick_start/lib/main.dart` 文件,引入头文件: + +```dart +import 'package:flutter/material.dart'; +import 'package:shengwang_chat_sdk/shengwang_chat_sdk.dart'; +``` + +修改 `_MyHomePageState` 代码: + +```dart +class _MyHomePageState extends State { + + ScrollController scrollController = ScrollController(); + String _username = ""; + String _token = ""; + String _messageContent = ""; + String _chatId = ""; + final List _logText = []; + + @override + void initState() { + super.initState(); + _initSDK(); + _addChatListener(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(widget.title), + ), + body: Container( + padding: const EdgeInsets.only(left: 10, right: 10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.max, + children: [ + TextField( + decoration: const InputDecoration(hintText: "Enter username"), + onChanged: (username) => _username = username, + ), + TextField( + decoration: const InputDecoration(hintText: "Enter token"), + onChanged: (token) => _token = token, + ), + const SizedBox(height: 10), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Expanded( + flex: 1, + child: TextButton( + onPressed: _signIn, + child: const Text("SIGN IN"), + style: ButtonStyle( + foregroundColor: MaterialStateProperty.all(Colors.white), + backgroundColor: + MaterialStateProperty.all(Colors.lightBlue), + ), + ), + ), + const SizedBox(width: 10), + Expanded( + child: TextButton( + onPressed: _signOut, + child: const Text("SIGN OUT"), + style: ButtonStyle( + foregroundColor: MaterialStateProperty.all(Colors.white), + backgroundColor: + MaterialStateProperty.all(Colors.lightBlue), + ), + ), + ), + ], + ), + const SizedBox(height: 10), + TextField( + decoration: const InputDecoration( + hintText: "Enter the username you want to send"), + onChanged: (chatId) => _chatId = chatId, + ), + TextField( + decoration: const InputDecoration(hintText: "Enter content"), + onChanged: (msg) => _messageContent = msg, + ), + const SizedBox(height: 10), + TextButton( + onPressed: _sendMessage, + child: const Text("SEND TEXT"), + style: ButtonStyle( + foregroundColor: MaterialStateProperty.all(Colors.white), + backgroundColor: MaterialStateProperty.all(Colors.lightBlue), + ), + ), + Flexible( + child: ListView.builder( + controller: scrollController, + itemBuilder: (_, index) { + return Text(_logText[index]); + }, + itemCount: _logText.length, + ), + ), + ], + ), + ), + ); + } + + void _initSDK() async { + } + + void _addChatListener() { + } + + void _signIn() async { + } + + void _signOut() async { + } + + void _sendMessage() async { + } + + void _addLogToConsole(String log) { + _logText.add(_timeString + ": " + log); + setState(() { + scrollController.jumpTo(scrollController.position.maxScrollExtent); + }); + } + + String get _timeString { + return DateTime.now().toString().split(".").first; + } +} +``` + +#### 初始化 SDK + +在 `_initSDK` 方法中添加 SDK 初始化: + +```dart +void _initSDK() async { + ChatOptions options = ChatOptions.withAppId( + "<#Your AppId#>", + autoLogin: false, + ); + await ChatClient.getInstance.init(options); + // 通知 SDK UI 已准备好。该方法执行后才会收到 `ChatRoomEventHandler`、`ChatContactEventHandler` 和 `ChatGroupEventHandler` 回调。 + await ChatClient.getInstance.startCallback(); +} +``` + +#### 注册即时通讯 IM 用户 + +1. 创建用户 + +在[声网控制台](https://console.shengwang.cn/overview)按照如下步骤创建用户: + +1. 展开控制台左上角下拉框,选择需要开通即时通讯 IM 服务的项目。 +2. 点击左侧导航栏的**全部产品**。 +3. 在下拉列表中找到**即时通讯 IM** 并点击。 +4. 在**即时通讯 IM** 页面,进入**运营管理**标签页。 +5. 在**用户** 页签下,点击**创建IM用户**。 +6. 在弹出的对话框中,配置用户相关参数,点击**确定**。 + +2. 获取用户 token + +创建用户后,在用户列表点击对应的用户的**操作**一栏中的**更多**,选择**查看Token**。 + +在弹出的对话框中,可以查看用户 Token,也可以点击**重新生成**,生成用户 token。 + +#### 添加登录 + +在 `_signIn` 方法中添加登录代码。 + +```dart +void _signIn() async { + if (_username.isEmpty || _token.isEmpty) { + _addLogToConsole("username or token is null"); + return; + } + + try { + await ChatClient.getInstance.loginWithToken(_username, _token); + _addLogToConsole("sign in succeed, username: $_username"); + } on ChatError catch (e) { + _addLogToConsole("sign in failed, e: ${e.code} , ${e.description}"); + } +} +``` + +#### 添加退出 + +在 `_signOut` 方法中添加退出代码。 + +```dart +void _signOut() async { + try { + await ChatClient.getInstance.logout(true); + _addLogToConsole("sign out succeed"); + } on ChatError catch (e) { + _addLogToConsole( + "sign out failed, code: ${e.code}, desc: ${e.description}"); + } +} +``` + +#### 添加发消息 + +在 `_sendMessage` 方法中添加发消息代码。 + +```dart +void _sendMessage() async { + if (_chatId.isEmpty || _messageContent.isEmpty) { + _addLogToConsole("single chat id or message content is null"); + return; + } + + var msg = ChatMessage.createTxtSendMessage( + targetId: _chatId, + content: _messageContent, + ); + + ChatClient.getInstance.chatManager.sendMessage(msg); +} +``` + +#### 添加收消息监听 + +在 `_addChatListener` 方法中添加代码。 + +```dart +void _addChatListener() { + + // 添加消息状态变更监听 + ChatClient.getInstance.chatManager.addMessageEvent( + // ChatMessageEvent 对应的 key。 + "UNIQUE_HANDLER_ID", + ChatMessageEvent( + onSuccess: (msgId, msg) { + _addLogToConsole("send message succeed"); + }, + onProgress: (msgId, progress) { + _addLogToConsole("send message succeed"); + }, + onError: (msgId, msg, error) { + _addLogToConsole( + "send message failed, code: ${error.code}, desc: ${error.description}", + ); + }, + )); + + + // 添加收消息监听 + ChatClient.getInstance.chatManager.addEventHandler( + // ChatEventHandler 对应的 key。 + "UNIQUE_HANDLER_ID", + ChatEventHandler( + onMessagesReceived: (messages) { + for (var msg in messages) { + switch (msg.body.type) { + case MessageType.TXT: + { + ChatTextMessageBody body = msg.body as ChatTextMessageBody; + _addLogToConsole( + "receive text message: ${body.content}, from: ${msg.from}", + ); + } + break; + case MessageType.IMAGE: + { + _addLogToConsole( + "receive image message, from: ${msg.from}", + ); + } + break; + case MessageType.VIDEO: + { + _addLogToConsole( + "receive video message, from: ${msg.from}", + ); + } + break; + case MessageType.LOCATION: + { + _addLogToConsole( + "receive location message, from: ${msg.from}", + ); + } + break; + case MessageType.VOICE: + { + _addLogToConsole( + "receive voice message, from: ${msg.from}", + ); + } + break; + case MessageType.FILE: + { + _addLogToConsole( + "receive image message, from: ${msg.from}", + ); + } + break; + case MessageType.CUSTOM: + { + _addLogToConsole( + "receive custom message, from: ${msg.from}", + ); + } + break; + case MessageType.COMBINE: + { + _addLogToConsole( + "receive combine message, from: ${msg.from}"); + } + break; + case MessageType.CMD: + { + // 当前回调中不会有 CMD 类型消息,CMD 类型消息通过 `ChatEventHandler#onCmdMessagesReceived` 回调接收 + } + break; + } + } + }, + ), + ); +} +``` + +#### 移除消息监听 + +在 `dispose` 方法中添加代码移除监听: + +```dart +@override +void dispose() { + // 移除消息状态监听 + ChatClient.getInstance.chatManager.removeMessageEvent("UNIQUE_HANDLER_ID"); + // 移除收消息监听 + ChatClient.getInstance.chatManager.removeEventHandler("UNIQUE_HANDLER_ID"); + super.dispose(); +} +``` + +### 运行项目 + +以 iOS 为例,首先打开模拟器,然后在终端运行以下命令。 + +```bash +flutter run +``` + +### 后续步骤 + +为保障通信安全,在正式生产环境中,你需要在自己的 app 服务端生成 Token。详见使用 Token 鉴权。 + + +## API 文档 + +关于 API 详情,请参见 [官网 API 参考](https://sdkdocs.easemob.com/apidoc/flutter/index.html)文档。 + +## 更新日志 + +关于版本更新日志,请参见 [官网更新日志](https://doc.easemob.com/document/flutter/releasenote.html)文档。 + +## 参考 + +[集成文档](https://doc.easemob.com/document/flutter/integration.html) + +[环信即时通讯 IM 产品介绍](https://doc.easemob.com/product/introduction.html) + +## 关键字 + +// TODO:这里的关键字链接到官网的文档 + +消息、会话、群组、聊天室、离线推送、用户关系 + + + + + + +