SDK · 鸿蒙 HarmonyOS

imcore-sdk 是 imcore IM 服务端的鸿蒙 HarmonyOS NEXT(API 12+,ArkTS) 客户端 SDK。基于 @ohos.net.webSocket 的共享 WebSocket 协议、自动重连、 心跳、登录生命周期、离线发送队列,以及私信/群聊/聊天室 API;协议命令与 DTO 从 clients/protocol.yaml 生成,与其他五端 SDK 同一 wire 契约。

引入

DevEco Studio → File → Import Module → 下载页解压出的 imcore-sdk-harmony-<版本>/;或在工程 oh-package.json5 中加 "imcore-sdk": "file:./imcore-sdk-harmony-<版本>"。

用法

import { createHarmonyClient, Cmd } from 'imcore-sdk';

const client = await createHarmonyClient({
  url: 'wss://your-host/acc',
  token: '<jwt>',
  userId: '1001',
  userName: 'alice',
  storageContext: this.context,   // 可选:离线队列持久化
  storageName: 'imcore-1001',     // 按用户命名,账号间隔离
});

client.onStatusChanged(s => console.info(`imcore: ${s}`));
const sub = client.on(Cmd.ChatMessage, p =>
  console.info(`msg ${p.get('text')?.asString()}`));

await client.connect();           // 服务端确认登录后才返回;被拒抛 RequestError
await client.dm.send('2002', 'hello');
const history = await client.dm.history('2002', null, 20);

// 任意尚未封装命令的逃生通道:
await client.request('chat_group_create',
  JsonValue.object().set('name', JsonValue.ofString('team')));

行为细节

  • 回调全部运行在方舟单线程事件循环(UI 线程),无需线程封送。
  • 断线/未登录时 sendQueued 入队(preferences 持久化),重连登录后自动 flush;account_revoked 时队列自动清空。
  • 应用切后台由宿主调用 disconnect()、回前台 connect()。
  • 非 2xx 响应映射为 RequestError(含服务端 code);seq 关联 + 超时默认 10s。

能力范围(首期)

协议核心(ArkTS 兼容 TS 子集,CI 用 Node 原生 type-stripping 全量测试)

  • DM/群/聊天室 API + 离线队列 + @ohos webSocket/preferences 适配。 不含: ArkUI TUIKit、Push Kit 推送、ohpm 公共仓库发布、DevEco 示例 工程。