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

171 行
3.4 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# HarmonyOS SDK 概览
**包名**`@xuqm/harmony-sdk` · **版本**0.1.0 · **支持**HarmonyOS NEXTAPI 12+、ArkTS
## 功能模块
| 模块 | 功能 |
|------|------|
| `XuqmSDK` | 全局初始化 |
| `ImSDK` | 单聊、群聊、消息收发 |
| `UpdateSDK` | App 版本检查、RN Bundle 热更新 |
## 安装
`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 会自动触发 WebSocket 连接
```
### 3. 监听消息
```typescript
ImSDK.addListener({
onConnected(): void { console.log('WS 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)
}
const bundle = await UpdateSDK.checkRNUpdate('home', '1.0.0')
if (bundle) {
const content = await UpdateSDK.downloadBundle(bundle.downloadUrl)
// 缓存至本地,由 BundleRuntime 加载
}
```
Harmony 的整包更新只提供应用市场跳转,不提供本地安装包下载。
## 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" }
]
}
```