IM API设计分析
本文主要针对业界RTM/IM标杆企业(腾讯、声网、环信等)的API简单分析。
| 公司(产品) | 比较分析 |
|---|---|
| 腾讯IM | 功能非常完善(值的借鉴);API接口异步回调; |
| 声网RTM | 从即时信令RTM发展起来,已加入上传图片功能(没有会话管理功能);API接口也非常规范,值的借鉴 |
| 环信IM | 功能较全。API接口异步返回还是采用传统的回调函数; |
腾讯 IM API
登录相关
| API | 描述 |
|---|---|
| login | 登录。 |
| logout | 登录。 |
消息
| API | 描述 |
|---|---|
| createTextMessage | 创建文本消息。 |
| createImageMessage | 创建图片消息。 |
| createAudioMessage | 创建音频消息。 |
| createVideoMessage | 创建视频消息。 |
| createCustomMessage | 创建自定义消息。 |
| createFaceMessage | 创建表情消息。 |
| createFileMessage | 创建文件消息。 |
| sendMessage | 发送消息。 |
| revokeMessage | 撤回消息。 |
| resendMessage | 重发消息。 |
| getMessageList | 获取消息列表。 |
| setMessageRead | 设置消息已读。 |
会话
| API | 描述 |
|---|---|
| getConversationList | 获取会话列表。 |
| getConversationProfile | 获取会话资料。 |
| deleteConversation | 删除会话。 |
资料
| API | 描述 |
|---|---|
| getMyProfile | 获取个人资料。 |
| getUserProfile | 获取其他用户资料。 |
| updateMyProfile | 更新个人资料。 |
| getBlacklist | 获取我的黑名单列表。 |
| addToBlacklist | 添加用户到黑名单列表。 |
| removeFromBlacklist | 将用户从黑名单中移除。 |
群组
| API | 描述 |
|---|---|
| getGroupList | 获取群组列表。 |
| getGroupProfile | 获取群详细资料。 |
| createGroup | 创建群组。 |
| dismissGroup | 解散群组。 |
| updateGroupProfile | 修改群组资料。 |
| joinGroup | 申请加群。 |
| quitGroup | 退出群组。 |
| searchGroupByID | 搜索群组。 |
| changeGroupOwner | 转让群组。 |
| handleGroupApplication | 处理申请加群。 |
| setMessageRemindType | 设置群消息提示类型。 |
群成员
| API | 描述 |
|---|---|
| getGroupMemberList | 获取群成员列表。 |
| getGroupMemberProfile | 获取群成员资料。 |
| addGroupMember | 添加群成员。 |
| deleteGroupMember | 删除群成员。 |
| setGroupMemberMuteTime | 设置群成员的禁言时间。 |
| setGroupMemberRole | 修改群成员角色。 |
| setGroupMemberNameCard | 设置群成员名片。 |
| setGroupMemberCustomField | 设置群成员自定义字段。 |
其他
| API | 描述 |
|---|---|
| on | 监听事件。 |
| off | 取消监听事件。 |
| registerPlugin | 注册插件。 |
| setLogLevel | 设置日志级别。 |
声网RTM API
上传或下载文件或图片
| 方法 | 描述 |
|---|---|
| createMediaMessageByUploading | 上传一个文件或图片到 Agora 服务器以获取 RtmFileMessage 实例或 RtmImageMessage 实例,可用于发送频道消息和点对点消息。 |
| createMessage | 创建一个消息实例。对于文件消息和图片消息,如果对应的文件或图片已经上传且 media ID 仍然有效,你无需再次上传文件或图片,可以直接调用此方法获取消息实例用来发送点对点消息或频道消息。 |
| downloadMedia | 通过 media ID 从 Agora 服务器下载文件或图片。 |
登录状态管理

环信IM API
与腾讯IM类似,返回还是采用传统的回调函数。
小结
- 高效做事
漫无目的地讨论各种im的在线消息,离线消息的设计。 还不如把腾讯RIM的 demo研究下,运行 看下IM功能怎么做的,是个什么逻辑。
对于非常成熟的基础功能(如IM),在自己没底的情况下,多借鉴业界同行成功经验。善于模仿,高效做事。
FAQ
命名对应关系
- 腾讯API命名“资料”(Profile) 对应声网API命名 “属性”(Attribute)。
文件存储功能
- 腾讯QQ 会采用文件助手暂存7天。
off取消监听用法
腾讯off用法:
off(eventName, handler, contextopt, onceopt)
取消监听事件。
Example
let onMessageReceived = function(event) {
// 收到推送的单聊、群聊、群提示、群系统通知的新消息,可通过遍历 event.data 获取消息列表数据并渲染到页面
// event.name - TIM.EVENT.MESSAGE_RECEIVED
// event.data - 存储 Message 对象的数组 - [Message]
};
tim.off(TIM.EVENT.MESSAGE_RECEIVED, onMessageReceived);