Skip to content

生命周期与连接 API

1. 一键连接

lifecycle.connect

这是普通 App 推荐入口。SDK 自动发现公开服务配置、创建账号隔离存储、启动 Core、登录并安装续凭回调。

参数必填说明
server / serverURLXHIM Server 的 HTTPS 基地址;开发环境可显式允许 HTTP
userID当前 App 已登录业务用户 ID
appID省略时采用 Server 公布的默认 App ID
authenticationDevelopment、固定 Access Token 或业务凭证回调
storageRootSDK 账号隔离存储根目录;通常使用平台默认值

返回已登录的 XHIMClient。连接发现阶段错误使用 XHIMConnectionError; Core 运行阶段错误使用平台对应的 XHIMNativeError / XHIMException

swift
let request = XHIMClient.connect(
    server: "https://im.example.com",
    userID: account.userID,
    authentication: .business(account.fetchXHIMCredential),
    onConnecting: {
        viewModel.connectionState = .connecting
    },
    onConnectSuccess: { client in
        accountContainer.client = client
    },
    onConnectFailure: { error in
        viewModel.show(error.message)
    }
)

平台符号:iOS/macOS/Android/HarmonyOS XHIMClient.connect,Windows XHIMClient.ConnectAsync

iOS 与 macOS 回调式 API 的参数、回调线程和错误字段分别见 iOS 回调式 APImacOS 回调式 API。原有 async throws 重载完整 保留,供采用 Swift Concurrency 的账号 Repository 使用。

2. 手动创建与底层生命周期

手动模式主要供 SDK 容器、特殊存储目录和高级运行策略使用。普通页面不要走这条 路径。

api-id方法输入返回 / 状态
lifecycle.create创建 ClientXHIMClientConfigurationClient,状态 created
lifecycle.start启动 CoreVoid,状态 started
lifecycle.login首次登录accountHint, accessTokenVoid,最终进入 ready
lifecycle.update_credential更新过期凭证accessTokenVoid,恢复连接和同步
lifecycle.logout退出当前账号清理账号会话;Client 可再次登录
lifecycle.state读取当前状态XHIMClientState
lifecycle.notify_network_available通知网络恢复触发有界重连,不代表已 ready
lifecycle.diagnostics读取安全诊断快照XHIMDiagnostics,不含账号和凭证
lifecycle.device_session_policy读取多端登录策略XHIMDeviceSessionPolicy
lifecycle.compatibility读取协议能力协商XHIMCompatibilitySnapshot
lifecycle.shutdown不可逆关闭等待请求和事件通道收尾

合法主路径:

text
created → started → authenticating → connecting → synchronizing → ready
                                     credentialRequired ──update──┘
ready → loggingOut → started
任意可运行状态 → closed
不可恢复故障 → fatal

logoutshutdown 不同:退出后可在同一 Client 重新登录,关闭后必须新建 Client。一个 Client 只绑定一个账号;切换账号时先退出,并让 SDK 使用不同账号 存储目录。

3. 鉴权模式

模式用途生产可用
Development私有测试环境按 User ID 获取测试凭证
Access Token已有短生命周期凭证的受控工具仅特殊集成
Business Provider使用 App 现有登录态向业务后端换取 XHIM 凭证

业务 Provider 只返回字符串凭证。SDK 在首次登录和 credentialRequired 时调用它,并合并并发刷新;View、ViewModel、Activity、 Window 或 ArkUI 页面不保存 Token。

4. 配置模型

XHIMClientConfiguration

字段说明
appID租户 / App 标识
storageURL / storagePath当前账号独享的加密数据库位置
eventQueueCapacity有界事件队列容量,默认 1024
runtimePolicy请求超时、同步页大小和有界重连退避
deployment已验证的 Bootstrap URL、Endpoint Key ID 和 Ed25519 公钥

使用 connect 时,deployment 由 Server 公开发现结果生成,接入方不需要手写 Endpoint 公钥。

5. 资源释放

  • iOS:await client.shutdown()
  • macOS:await client.shutdown()
  • Android:client.shutdown()
  • Windows:await client.DisposeAsync()ShutdownAsync()
  • HarmonyOS:await client.shutdown(),随后可调用 destroy() 立即释放壳对象。

析构函数和 GC 只作为泄漏兜底。账号容器应显式关闭 Client,并在关闭完成后再 释放页面和仓库订阅。

XHIM 客户端 SDK 与服务端文档