跳至正文

生命周期、事件与错误

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 全表