IM API设计分析

2020/04/06 RTM 共 2144 字,约 7 分钟

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 服务器下载文件或图片。

登录状态管理

connection-state-change

环信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);

参考链接

文档信息

Search

    Table of Contents