HarmonyOS IMKit 快速开始

本页在 5 个步骤内完成 HarmonyOS 端 IMKit 接入:先接入 IMLib,再初始化门面,最后挂载会话列表与会话页。IMKit 只消费 IMLib 的公开数据,不重复实现通信能力。

契约预留

本平台 IMKit 为 reserved:契约已备、未实现:本文件只有 ArkTS 签名映射,无源码、无构建、无运行证据。 下列代码为契约样例,不可直接运行。

  1. 接入 IMLib

    按 IMLib 快速开始 完成初始化与连接;IMKit 不重复建立连接。

  2. 导入 IMKit

    按「导入 SDK」安装依赖;只依赖 @ni-paas-im/harmony 的公开接口;不得直接 import @ohos.net.http / @ohos.net.webSocket / @ohos.data.relationalStore(sdk-imkit.json dependencyRule)

  3. 初始化门面

    初始化 IMLib 客户端并连接,然后创建 IMKit 门面(或调用静态 init);门面持有主题、语言与组件实例。

  4. 挂载会话列表

    传入 conversations 与交互回调;会话数据来自 IMLib 的 getConversationList 与 CONVERSATION 事件。

  5. 挂载会话页与输入区

    传入 messages / currentUserId / hasMore;发送与已读回调转调 IMLib 对应接口。

1. 接入 IMLib​

IMKit 的所有数据都来自 IMLib 公开接口:连接、会话列表、历史消息、发送、已读回执与未读清零。先完成 IMLib 接入再使用 IMKit。

2. 导入 IMKit​

ohpm(预留)
// ohpm(预留包名,当前版本未发布)
ohpm install @ni-paas-im/harmony-imkit

3. 初始化门面​

ArkTS(契约预留)
// 契约预留:HarmonyOS 尚未实现,以下为契约样例
const kit = new IMKitFacade();
kit.mount(container);
kit.update({ appkey: 'YOUR_APP_KEY', locale: 'zh-CN' });

门面:IMKitFacade;门面 IMKitFacade.mount(container) / update(options) / destroy();mount/update/destroy 幂等。

4. 挂载会话列表​

ArkTS(契约预留)
// HarmonyOS 绑定为契约预留,以下为声明(bindings.harmony.imkit.methodMap)
// struct ConversationListView(@Component):props conversations/activeTargetId/theme/options;回调 onSelect(conversation)/onLongPress(conversation)/onRefresh();行为=置顶优先+updatedAt 倒序、未读 99+、muted 灰点(不显示红点)、空态/骨架

const kit = new IMKitFacade();
kit.mount(container); // 组件:ConversationListView
kit.update({ locale: 'zh-CN' });

5. 挂载会话页与输入区​

ArkTS(契约预留)
// HarmonyOS 绑定为契约预留,以下为声明(bindings.harmony.imkit.methodMap)
// struct ChatView(@Component):props conversationType/targetId/messages/currentUserId/hasMore/showReadCount;回调 onLoadMore()/onSendText(text,extras?)/onSendImage(image)/onSendFile(file)/onSendVoice(voice)/onSendLocation(location)/onRecall(messageId)/onResend(clientMsgId)/onTyping(bool)/onReadReceipt(messageIds)

const kit = new IMKitFacade();
kit.mount(container); // 组件:ChatView
kit.update({ locale: 'zh-CN' });

下一步​