生命周期、事件与错误
Client SDK 的接入重点是:按顺序初始化、登录、订阅事件、调用 API,并在退出时清理资源。
生命周期
推荐流程:
createClient()
register listeners
init(config)
login(request)
use client modules
logout()
dispose()
规则:
- 一个登录用户通常只持有一个
FlareImClient。 init成功前,不要调用会话、消息、媒体等业务 API。login成功后再拉取会话、同步消息或发送消息。- 用户退出时调用
logout()。 - 页面销毁、应用退出或切换账号时调用
dispose()。
事件订阅
业务 UI 通常使用高层 listener:
const sub = client.events.onMessageReceived((event) => {
// update UI
})
sub.unsubscribe()
建议:
- 订阅要和页面生命周期绑定,避免页面销毁后继续更新 UI。
- 回调里只做轻量状态更新,耗时任务交给后台任务或队列。
- token 过期、连接状态变化、同步完成等事件应统一进入应用状态管理。
错误处理
所有平台都会尽量保留稳定的错误字段:
code
message
retryable
details
常见错误:
| code | 含义 | 建议 |
|---|---|---|
notInitialized | 尚未初始化或实例已释放 | 重新检查生命周期顺序 |
notLoggedIn | 当前 API 需要登录态 | 先调用 login |
networkUnavailable | 网络不可用 | 提示用户重试或等待重连 |
capabilityUnavailable | 当前能力未启用 | 隐藏入口或展示不可用状态 |
tokenExpired | 登录 token 过期 | 刷新 token 后调用 updateAccessToken |
发送消息回调
发送消息时可以只等待返回值,也可以按平台能力监听进度或最终状态:
const result = await client.messages.sendMessage({ message })
UI 层建议至少处理:
- 发送中
- 已发送
- 发送失败,可重试
- 本地消息与服务端回执合并
清理清单
退出页面或切换账号时检查:
- 已取消页面内所有事件订阅
- 已停止上传、下载或重试任务
- 已调用
logout()或进入匿名/未登录状态 - 不再使用旧的
FlareImClient实例
更多 API 字段见 Client API 全表。