越来越多的客户把OpenIM用到了生产环境,由于新特性持续迭代和bug修复,会涉及到后续的升级方案,为了让大家后续从容应对,本文重点总结OpenIM对未来版本管理的思路和方案。同时,官网对于文档进行了全面更新,有部分端的文档需要在下周完成。
## 版本管理
OpenIM版本管理较为复杂,涉及到服务端版本,以及多端SDK版本。由于OpenIM的SDK底层使用golang实现,所以aar/framework和go core SDK(Open-IM-SDK-Core https://github.com/OpenIMSDK/Open-IM-SDK-Core) 版本保持一致。而插件层会修复自身bug从而带来版本号的变化,所以插件也有自身的版本号。服务端和客户端SDK只需要大版本(版本号第一位数字)保持一致即可。
用例子说明版本号管理
(1)比如go core SDK是2.0.1 (稳定版)
(2)aar包2.0.1 aar和go core SDK版本保持一致;
(3)flutter2.0.1+a 前面三位数保存一致, a b c 是修复自身bug后的版本号
(4)app 自身版本独立,如2.11.2, 但需要在app里面增加一项,表示使用了SDK版本号为2.0.1+a
| go sdk版本(github Open-IM-SDK-Core tag) | aar/framework版本 | Flutter sdk版本 | iOS sdk 版本 | Android sdk 版本 | js sdk 版本 | uniapp 版本 | app/pc版本 |
| ------------------------------------------ | ----------------- | -------------------------- | ------------------------- | ------------------------- | ------------------------------ | ------------------- | --------------------------------------------------- |
| 2.0.1 | 2.0.1 | 2.0.1+1 前面和core保持不变 | 2.0.1.1 前面2.0.1保持不变 | 2.0.1.1 前面2.0.1保持不变 | 2.1.0-beta.1前面和core保持一致 | 2.0.1和core保持一致 | 应用版本可以完全独立,但需要展使用sdk详细版本信息。 |
版本发布过程2.0.1-rc0 =》2.0.1-rc1 =》 2.0.1(稳定版)
## 项目成果
从服务端到客户端SDK开源即时通讯(IM)整体解决方案,可以轻松替代第三方IM云服务,并能根据业务需求高度自定义和二次开发,打造具备聊天、社交、办公功能的app。
OpenIM继续领跑开源IM领域,在广大开发者的大力支持下,目前github star持续突破。越来越多的开发者把OpenIM应用在社交,协同办公领域。在运营过程中也暴露并修复了代码的一些bug,由于使用场景广泛,OpenIM越来越健壮,开源价值也凸显出来了。
github地址: https://github.com/OpenIMSDK/Open-IM-Server
开发者中心:https://doc.rentsoft.cn/#/
## V2.2.0稳定版
V2.2.0稳定版发布时间:2022年7月1日
### 平台支持
以下平台都支持消息互通,SDK和服务端代码100%开源,采用Apache-2.0 License协议,任何团队和个人都可以免费商用。demo主要展示SDK如何使用。商业版是OpenIM团队在开源的服务端和SDK基础上,开发带有UI功能完整的IM产品
| 平台 | SDK 及兼容性 | 源码 | Demo | 商业版 |
| -------- | ------------------------ | -------- | -------- | -------------------- |
| Android | 兼容android5.0及以上版本 | 100%开源 | 100%开源 | 有,针对付费客户开放 |
| iOS | 兼容iOS 11.0及以上版本 | 100%开源 | 100%开源 | 有,针对付费客户开放 |
| Flutter | 兼容flutter2.0及以上版本 | 100%开源 | 100%开源 | 有,针对付费客户开放 |
| Uniapp | | 100%开源 | 100%开源 | 有,针对付费客户开放 |
| Electron | | 100%开源 | 100%开源 | 有,针对付费客户开放 |
| 小程序 | | 100%开源 | 100%开源 | 无 |
| Web | | 100%开源 | 100%开源 | 有,针对付费客户开放 |
| Linux | | 100%开源 | 100%开源 | 无 |
### 帐号功能
| 功能 | 说明 |
| ------------ | ------------------------------------ |
| 帐号禁用 | 设置Token踢出状态,强制用户踢出 |
| 帐号导入 | 把用户导入OpenIM |
| 用户在线状态 | 查询用户是否在线,以及具体哪些端在线 |
| 查询帐号 | 查询帐号是否导入 |
### 多端登录
| 功能 | 说明 |
| ---------- | ------------------------------------------------------------ |
| 单平台登录 | Android、iPhone、iPad、Windows、Mac 只能1端在线;Web 可10端同时在线 |
### 消息类型
| 功能 | 说明 |
| ------------ | ------------------------------------------------------------ |
| 文本消息 | 消息内容是普通文本 |
| 图片消息 | 消息内容为图片 URL 地址、尺寸、图片大小等信息 |
| 表情消息 | 表情消息为开发者自定义 |
| 语音消息 | 语音数据需要提供时长信息,以秒为单位 |
| 地理位置消息 | 消息内容为地理位置标题、经度、纬度信息 |
| 文件消息 | 消息内容为文件的 URL 地址、大小、格式等信息,格式不限,不限制大小。 |
| 短视频消息 | 消息内容为视频文件的 URL 地址、时长、大小、格式等信息,不限制大小。 |
| 自定义消息 | 开发者自定义的消息类型,例如红包等形式的消息 |
| 系统通知消息 | 包含内置的系统通知消息和开发者自定义系统通知消息 |
| Tips 消息 | 包括群、好友、用户信息修改等Tips |
| 合并消息 | 最大支持10条消息合并 |
| 清空所有消息 | 清除个人的本地和服务端消息 |
| 图片视频文件 | 支持MinIO,cos,oss上传 |
### 会话功能
| 功能 | 说明 |
| -------------- | ------------------------------------------ |
| 删除会话 | 支持删除本地;支持删除本地,同时删除服务端 |
| 设置会话免打扰 | 设置会话免打扰,单聊 群聊 |
| 置顶会话 | 置顶/取消置顶 |
### 设置功能
| 功能 | 说明 |
| -------------- | -------------------------- |
| 设置全局免打扰 | 设置后能收到消息,但不提醒 |
### 消息功能
| 功能 | 说明 |
| :----------- | :----------------------------------------------------------- |
| 离线消息 | 用户登录后退到后台,当有用户给其发消息时,即时通信 IM 支持离线推送 |
| 漫游消息 | 在新设备登录时,将服务器记录(云端)的历史消息存储进行同步,默认为全量同步。 |
| 多端同步 | 多终端消息同步,可同时收到消息 |
| 历史消息 | 支持本地历史消息和云端历史消息 |
| 消息撤回 | 撤回投递成功的消息,撤回时间由UI自己控制 |
| 已读回执 | 查看单聊/群聊会话中对方的已读未读状态,对于群聊可以查看哪些人已读/未读 |
| 消息转发 | 将消息转发给其他用户或群组 |
| @功能 | 群内 @ 消息与普通消息没有本质区别,仅是在被 @ 的人在收到消息时,需要在 UI 上做特殊处理 |
| 正在输入 | 支持 |
| 离线推送 | 目前整合了个推、极光推送 |
| 消息删除 | 支持仅删除本地,或者同时删除本地和服务端 |
| 消息回复 | 支持对消息进行回复 |
| 本地消息搜索 | 支持搜索好友,搜索群组、群成员;搜索消息,按照会话分组 |
### 阅后即焚
| 功能 | 说明 |
| ------------ | ------------------------------------------------------------ |
| 私聊阅后即焚 | 在私聊时,双方都可以开启或者关闭阅后即焚状态,在阅后即焚开启后,对方已读后,可以开启30秒倒计时,双方删除 |
### 用户功能
| 功能 | 说明 |
| :----------------------- | :--------------------------------------------------- |
| 设置用户资料 | 用户设置自己的昵称、头像、性别、年龄等资料 |
| 获取用户资料 | 用户查看自己、好友及陌生人资料 |
| 当前登录用户资料变更回调 | 通过监听回调,及时刷新UI界面 |
| 自定义用户资料 | 设置ex字段 |
| 用户通知监听回调 | 登录用户信息修改,连接成功/失败,token过期,被踢下线 |
### 关系链功能
| 功能 | 说明 |
| :--------------------------- | :----------------------------------------------- |
| 查找好友 | 可通过用户帐号 ID 查找好友 |
| 申请添加好友 | 申请添加好友,需对方同意 |
| 导入好友 | 支持导入双向好友关系 |
| 删除好友 | 成为好友后可以删除好友 |
| 获取所有好友 | 获取所有好友 |
| 同意/拒绝好友 | 收到请求加好友请求的系统通知后,可以通过或者拒绝 |
| 添加用户到黑名单 | 把任意用户拉黑,如果此前是好友关系,仍然保留 |
| 移除黑名单 | 把用户从黑名单中移除 |
| 获取黑名单列表 | 拉取用户黑名单列表 |
| 好友备注 | 成为好友后可以给好友备注 |
| 校验好友 | 支持校验单向好友关系 |
| 校验黑名单 | 支持校验单向黑名单 |
| 获取收到的的好友申请列表 | 被添加的好友申请列表 |
| 获取主动发出去的好友申请列表 | 主动申请添加其他人为好友的申请列表 |
| 好友通知监听回调 | 包括好友申请,好友列表变更,好友资料变更; |
| 黑名单通知监听回调 | 用户黑名单列表变更 |
### 群组功能
目前群组采用写扩散模型,会导致消息复制多份,同时不支持新成员查看进群前的历史消息。
| 功能 | 说明 |
| -------------------- | ------------------------------------------------------------ |
| 群容量 | 人数无上限,建议控制在一万人以内 |
| 创建群 | 任何人可以创建群 |
| 群资料属性 | 群名,群头像,群简介,群公告,群扩展字段 |
| 进群模式 | 群成员邀请直接入群;所有人直接进群;所有人都需要验证;群主和管理员验证通过 |
| 获取收到的群申请列表 | 群主管理员可以查看其他用户的入群申请 |
| 获取发出的群申请列表 | 查看本用户入群申请列表 |
| 获取群成员列表 | 拉取群成员信息,支持分页拉取 |
| 群主转让 | 现有群主转让群主身份给群成员 |
| 群成员类型 | 群主、管理员、普通成员 |
| 管理员设置 | 群主可以增减管理员 |
| 群组资料修改权限 | 群主、管理员可修改:群名,群头像,群简介,群公告,群扩展字段 |
| 修改群成员昵称 | 群主可以修改所有人的群昵称。 管理员只能修改普通群成员的群昵称。 |
| 修改自己的群昵称 | 群成员修改群内昵称,群昵称默认为用户昵称 |
| 消息类型支持 | 同消息类型 |
| 消息提醒 | 接收消息但不提示;屏蔽群消息 |
| 历史消息 | 支持 |
| 离线消息 | 支持 |
| 消息漫游 | 支持 |
| 指定成员强制推送@ | 群内 @ 消息与普通消息没有本质区别,仅是在被 @ 的人在收到消息时,需要在 UI 上做特殊处理 |
| 群消息已读回执 | 支持,后台可以配置是否启用,群消息哪些人已读未读 |
| 踢人 | 群主和管理员可以踢人,且管理员不能踢群主和其他管理员 |
| 主动退群 | 除群主外,其他用户均可以主动退群。 群主需先将群转让给其他群成员才可以进行退群操作 |
| 禁言 | 群主管理员对普通成员禁言、解除禁言 |
| 转让群 | 群主可以将群的拥有者权限转给群内的其他成员,转移后, 被转让者变为新的群主,原群主变为普通成员。 |
| 解散群 | 群主管理员可以解散群 |
| 群通知监听回调 | 包括群信息修改,群成员变更,个人进群列表变更,以及群申请通知。 |
## v2.3.0重要特性
预计v2.3.0-rc0发布时间为2022年7月20日
| 版本特性 | 预计发布时间 |
| ---------------------------------------------- | ------------ |
| 群聊写扩散增加读扩散机制,解决消息存储冗余问题 | 2022-7-20 |
| 优先同步群聊最新消息,按需拉取历史消息 | 2022-7-20 |
| 服务端加入一致性缓存,优化db读写性能 | 2022-7-20 |
| 支持单群百万级超级大群 | 2022-7-20 |
| 支持新入群用户查看历史消息 | 2022-7-20 |
## 我们的团队
有部分读者总在质疑现在乐此不疲做聊天 app还有什么价值?这里统一回答一下,OpenIM不是一个独立的聊天工具,是IM统一解决方案,OpenIM用开源技术创造服务价值,打造轻量级、高可用的IM架构,开发者只需简单调用 SDK,即可在应用内构建多种即时通讯及实时音视频互动场景,打造社交,还是电商客服,或者游戏互动等场景。相比于其他云服务商,OpenIM有其优势:开源,安全,可靠,低成本。对于信息安全重视的电子政务,企业协同办公,OpenIM都是非常好的选择。从公司成立之初就将“开源”作为核心战略来推进,以公司化运营打造开源IM,充分体现了自由、平等、分享的互联网精神。OpenIM邀请全球技术极客来参与OpenIM建设,使每位开发者都能免费使用最优秀的IM组件,让每个app都具备即时通讯能力。