跳至正文

Client SDK 使用指南

本文说明一期 Client SDK 的核心使用方式:创建客户端、初始化、登录、监听事件、读取会话、发送消息、同步和释放资源。

一期平台:Web、Tauri、iOS、Flutter、Android。方法参数可在 API 浏览器 查询。

选择平台

平台推荐 SDK异步风格
Web / TypeScript@flare-im/sdk/webPromise + subscription
Tauri@flare-im/sdk/tauriPromise + event
iOS / Swiftflare-core-apple-sdkasync throws + callback
Flutter / Dartflare_core_flutter_sdkFuture + subscription
Android / Kotlinflare-core-android-sdksuspend + listener

接入顺序

createClient()
register listeners
init(config)
login(request)
open conversations
send messages
sync when needed
logout()
dispose()

初始化

最小配置只需要服务地址和租户:

await client.init({
  wsUrl: 'wss://im.example.com/ws',
  httpUrl: 'https://im.example.com',
  tenantId: 'default',
  resourceProfile: 'mobile',
})
字段说明
wsUrlIM 长连接地址
httpUrlHTTP API 地址
tenantId租户或应用空间
resourceProfilemobiledesktop

登录

await client.login({
  userId: 'u_10001',
  token: coreToken,
})

token 由业务服务端签发或换取。token 过期后刷新并更新:

client.events.onUserTokenExpired(async () => {
  const nextToken = await refreshCoreToken()
  await client.updateAccessToken({ accessToken: nextToken })
})

监听事件

先订阅,再初始化和登录:

const messageSub = client.events.onMessageReceived((event) => {
  // event.message -> append to timeline
})

const connectSub = client.events.onConnectReady((event) => {
  // update connection state
})

页面销毁或切换账号时取消订阅:

messageSub.unsubscribe()
connectSub.unsubscribe()

会话与消息

读取会话:

const conversations = await client.conversations.listConversationsByQuery({
  limit: 30,
  includeArchived: false,
})

打开时间线:

const timeline = await client.conversations.openConversationTimeline({
  conversationId: 'c_10001',
  limit: 30,
})

构建并发送文本消息:

const message = await client.messageBuilder.buildText({
  conversationId: 'c_10001',
  text: 'hello',
})

await client.messages.sendMessage({ message })

同步与诊断

需求方法
同步会话摘要client.sync.syncConversationSummaries
同步单个会话client.sync.syncConversation
查询在线态client.presence.getUserPresence
获取媒体地址client.media.getMediaUrl
查看 SDK 版本client.diagnostics.getSdkVersion

错误和清理

业务层至少处理:

场景处理
未初始化回到 init 流程
未登录重新 login
token 过期刷新 token 并调用 updateAccessToken
网络不可用展示重连中或重试入口
发消息失败保留本地消息并提供重试

退出:

messageSub.unsubscribe()
connectSub.unsubscribe()

await client.logout()
await client.dispose()

同一账号会话结束后不要继续复用旧 client 实例。