XuqmGroup-Web/docs-site/docs/harmony/index.md
XuqmGroup 27d298a622 docs: 同步更新各平台 SDK 集成文档(V2 简化登录)
- Android: 移除 UserSig 续签章节,更新登录示例
- iOS: 移除过期检测章节,更新登录示例
- RN: 更新登录示例
- Vue3: 更新登录示例
- HarmonyOS: 更新登录示例
- Server API: 更新 /api/im/auth/login 参数说明与签名规则
2026-05-01 22:18:58 +08:00

3.4 KiB

HarmonyOS SDK 概览

包名@xuqm/harmony-sdk · 版本0.1.0 · 支持HarmonyOS NEXTAPI 12+、ArkTS

功能模块

模块 功能
XuqmSDK 全局初始化
ImSDK 单聊、群聊、消息收发
UpdateSDK App 版本检查、RN Bundle 热更新

安装

oh-package.json5 中添加:

{
  "dependencies": {
    "@xuqm/harmony-sdk": "0.1.0"
  }
}

配置私有仓库(.ohpmrc

registry=https://nexus.xuqinmin.com/repository/ohpm-hosted/

执行安装:

ohpm install

快速接入

1. 初始化EntryAbility.onCreate

import { XuqmSDK } from '@xuqm/harmony-sdk'

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
    XuqmSDK.init({
      appKey:     'your_app_key',
      debug:      true,
    })
  }
}

2. IM 登录

import { XuqmSDK, ImSDK } from '@xuqm/harmony-sdk'

// 只需要 userId + userSig
await XuqmSDK.login('user_001', 'your_user_sig_jwt')
// 如果集成了 ImSDK,XuqmSDK.login 会自动触发 WebSocket 连接

3. 监听消息

ImSDK.addListener({
  onConnected():         void { console.log('WS connected') },
  onDisconnected(reason: string | null): void { },
  onMessage(msg: ImMessage):  void { /* 处理消息 */ },
  onError(err: string):       void { },
})

4. 发送消息

// 文本消息
const sent = await ImSDK.sendMessage({
  toId:     'user_002',
  chatType: 'SINGLE',
  msgType:  'TEXT',
  content:  'Hello from HarmonyOS!',
})

// 图片消息
const sent = await ImSDK.sendMessage({
  toId: 'user_002', chatType: 'SINGLE',
  msgType: 'IMAGE',
  content: JSON.stringify({ url: 'https://cdn.example.com/img.jpg', width: 800, height: 600 }),
})

5. 撤回消息

const revoked = await ImSDK.revokeMessage(msg.id)

6. 群聊

const group = await ImSDK.createGroup('鸿蒙群', ['user_001', 'user_002'])
ImSDK.subscribeGroup(group.id)
const sent = await ImSDK.sendMessage({ toId: group.id, chatType: 'GROUP', msgType: 'TEXT', content: '大家好' })

7. 检查更新

import { UpdateSDK } from '@xuqm/harmony-sdk'

const appInfo = await UpdateSDK.checkAppUpdate(1)
if (appInfo?.marketUrl) {
  await UpdateSDK.openAppMarket(getContext(this), appInfo.marketUrl)
}

const bundle = await UpdateSDK.checkRNUpdate('home', '1.0.0')
if (bundle) {
  const content = await UpdateSDK.downloadBundle(bundle.downloadUrl)
  // 缓存至本地,由 BundleRuntime 加载
}

Harmony 的整包更新只提供应用市场跳转,不提供本地安装包下载。

ArkUI 示例

@Component
struct ChatView {
  @State messages: ImMessage[] = []

  aboutToAppear() {
    ImSDK.addListener({
      onMessage: (msg) => { this.messages = [...this.messages, msg] },
      onConnected: () => {},
      onDisconnected: () => {},
      onError: () => {},
    })
  }

  build() {
    Column() {
      List() {
        ForEach(this.messages, (msg: ImMessage) => {
          ListItem() {
            Text(`${msg.fromUserId}: ${msg.content}`)
              .fontSize(16)
              .padding(8)
          }
        })
      }
    }
  }
}

权限配置

module.json5 中添加必要权限:

{
  "requestPermissions": [
    { "name": "ohos.permission.INTERNET" },
    { "name": "ohos.permission.GET_NETWORK_INFO" }
  ]
}