在集成TIM的时候,有部分同学会遇到这个状态码 code:2999;message:接口调用时机不合理,等待SDK处于ready状态后再调用,
code:2999在错误码表中有说明:
之所以需要等待SDK处于ready状态后再调用是因为此时SDK各模块都准备就绪了, 再调用收发消息接口不会因为缺少某些必要的数据而导致流程阻塞。
IM SDK 调用 API 需要遵循如下表所示顺序:
操作类型 | 值 | 含义 |
---|---|---|
创建 SDK 实例 | TIM.create(options) | 通过 TIM 工厂函数创建 SDK 实例(通常用 tim 表示)。 |
设置日志级别 | tim.setLogLevel(level) | 设置日志级别,低于 level 的日志将不会输出。 |
注册插件 | tim.registerPlugin(optoins) | 注册上传图片、文件等需要用到 对象存储服务 COS 作为 IM SDK 的上传插件。 |
监听事件 | tim.on(event, handler) | 监听事件,在 handler 里处理 SDK 抛出来的数据。 |
登录 | tim.login(options) | 登录成功,SDK 状态为 ready 后,可收发消息。 |
创建文本消息 | tim.createTextMessage(options) | 创建文本消息。此接口返回一个消息实例,接入侧可将此消息做立即上屏处理。 |
发送消息 | tim.sendMessage(message) | 发送创建好的消息实例。 |
获取会话列表 | tim.getConversationList() | 获取会话列表,接入侧可处理会话列表数据,渲染会话列表界面。 |
获取群组列表 | tim.getGroupList() | 获取群组列表,接入侧可处理群组列表数据,渲染群组列表界面。 |
获取黑名单列表 | tim.getBlacklist() | 获取黑名单列表,接入侧可处理黑名单列表数据,渲染黑名单列表界面。 |
获取个人资料 | tim.getMyProfile() | 获取个人资料,接入侧可处理个人资料数据,渲染个人资料界面。 |
登出 | tim.logout() | 退出登录。 |
上表中的调用顺序可以用这张时序图表示出来:
- 在登录之前,需要先订阅(监听)TIM.EVENT.SDK_READY事件;
- 登录后,收到会话列表以及未读消息同步完毕通知后,此时才会发布SDK_READY事件,触发sdk is ready通知;
- 收到sdk is ready的通知,可以开始收发消息。