# HarmonyOS SDK 概览 **包名**:`@xuqm/harmony-sdk` · **版本**:0.1.0 · **支持**:HarmonyOS NEXT(API 12+)、ArkTS ## 功能模块 | 模块 | 功能 | |------|------| | `XuqmSDK` | 全局初始化 | | `ImSDK` | 单聊、群聊、消息收发 | | `UpdateSDK` | App 版本检查、整包更新 | ## 安装 在 `oh-package.json5` 中添加: ```json { "dependencies": { "@xuqm/harmony-sdk": "0.1.0" } } ``` 配置私有仓库(`.ohpmrc`): ``` registry=https://nexus.xuqinmin.com/repository/ohpm-hosted/ ``` 执行安装: ```bash ohpm install ``` ## 快速接入 ### 1. 初始化(EntryAbility.onCreate) ```typescript 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 登录 ```typescript import { XuqmSDK, ImSDK } from '@xuqm/harmony-sdk' // 只需要 userId + userSig await XuqmSDK.login('user_001', 'your_user_sig_jwt') // 如果集成了 ImSDK,XuqmSDK.login 会自动触发 IM 实时连接 ``` ### 3. 监听消息 ```typescript ImSDK.addListener({ onConnected(): void { console.log('IM connected') }, onDisconnected(reason: string | null): void { }, onMessage(msg: ImMessage): void { /* 处理消息 */ }, onError(err: string): void { }, }) ``` ### 4. 发送消息 ```typescript // 文本消息 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. 撤回消息 ```typescript const revoked = await ImSDK.revokeMessage(msg.id) ``` ### 6. 群聊 ```typescript 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. 检查更新 ```typescript import { UpdateSDK } from '@xuqm/harmony-sdk' const appInfo = await UpdateSDK.checkAppUpdate(1) if (appInfo?.marketUrl) { await UpdateSDK.openAppMarket(getContext(this), appInfo.marketUrl) } ``` HarmonyOS 的整包更新只提供应用市场跳转,不提供本地安装包下载。 ## ArkUI 示例 ```typescript @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` 中添加必要权限: ```json { "requestPermissions": [ { "name": "ohos.permission.INTERNET" }, { "name": "ohos.permission.GET_NETWORK_INFO" } ] } ``` --- ## 8. Push 接入 HarmonyOS SDK 提供 `PushSDK` 用于注册和注销推送 Token。业务层需在获取到 HarmonyOS PushKit 推送服务的 Token 后调用注册接口。 ```typescript import { PushSDK } from '@xuqm/harmony-sdk' // 注册 Push Token(在获取到系统推送 Token 后调用) await PushSDK.registerToken('harmony_push_token', 'user_001') // 登出时注销 Token await PushSDK.unregisterToken('harmony_push_token') ``` > HarmonyOS 推送 Token 通过系统 Push Kit 获取,具体接入请参考 HarmonyOS 官方推送文档。SDK 内部 `vendor` 固定为 `HARMONY`,`platform` 固定为 `harmony`。 --- ## 9. 版本更新 HarmonyOS SDK 提供整包检查能力。 ### 9.1 检查 App 更新 ```typescript import { UpdateSDK } from '@xuqm/harmony-sdk' const result = await UpdateSDK.checkAppUpdate('your_app_key') if (result.hasUpdate) { console.log('发现新版本:', result.info?.latestVersionCode) // HarmonyOS 整包更新只提供应用市场跳转 if (result.info?.marketUrl) { await UpdateSDK.openAppMarket(getContext(this), result.info.marketUrl) } } ``` > HarmonyOS 的整包更新只提供应用市场跳转,不提供本地安装包下载。