SDKsHarmonyOS商业版
工程与设备接入
在 HarmonyOS 工程中安装 HAR、声明权限并初始化 OpenIMClientSDK。
HarmonyOS SDK 使用一个 HAR 支持手机、平板和 2in1。开始前先完成开始之前中的服务、凭据和开发环境准备。
安装 HAR
把交付的 HAR 复制到应用模块,并在该模块的 oh-package.json5 中声明本地依赖。下面使用 <sdk-package>.har 表示实际收到的文件名:
{
dependencies: {
'@openimsdk/imsdk': 'file:./libs/<sdk-package>.har',
},
}在 src/main/module.json5 中声明网络权限:
{
module: {
requestPermissions: [{ name: 'ohos.permission.INTERNET' }],
},
}修改 HAR 或权限后重新同步 OHPM 依赖并完整构建应用,不要依赖旧的增量构建产物。
初始化 SDK
import sdk, {
AppFramework,
HttpClientMode,
InitSDKReq,
LogLevel,
Platform,
} from '@openimsdk/imsdk';
const request: InitSDKReq = {
config: {
apiAddr: 'https://api.example.com',
wsAddr: 'wss://ws.example.com',
dataDir: `${filesDir}/openim/data`,
dbPath: `${filesDir}/openim/data`,
logFilePath: `${filesDir}/openim/logs`,
appFramework: AppFramework.Native,
platform: Platform.HarmonyOS,
logLevel: LogLevel.LevelWarn,
isLogStandardOutput: false,
StopGoroutineOnBackground: true,
LogRemainCount: 3,
diagnoseHashSalt: 'your-app-specific-diagnose-salt',
httpClientMode: HttpClientMode.ConnFirst,
},
};
await sdk.initSDK(request);参数说明
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
apiAddr | string | 是 | OpenIMServer API 地址。 |
wsAddr | string | 是 | OpenIMServer WebSocket 地址。 |
dataDir、dbPath | string | 是 | 应用私有的稳定可写目录;同一进程内的窗口应保持一致。 |
logFilePath | string | 否 | SDK 日志目录;未设置时由当前发行包的默认行为决定。 |
appFramework | AppFramework | 否 | 原生 ArkTS 应用使用 AppFramework.Native。 |
platform | Platform | 否 | HarmonyOS 使用 Platform.HarmonyOS。 |
logLevel | LogLevel | 否 | SDK 日志级别。 |
isLogStandardOutput | boolean | 是 | 是否把 Core 日志输出到系统日志。 |
StopGoroutineOnBackground | boolean | 是 | 手机和平板通常设为 true;持续运行的 2in1 进程可按生命周期策略设为 false。 |
LogRemainCount | number | 是 | 本地日志文件保留数量。 |
diagnoseHashSalt | string | 是 | 诊断哈希使用的应用级稳定字符串。 |
httpClientMode | HttpClientMode | 是 | HTTP 连接策略,通常使用 HttpClientMode.ConnFirst。 |
Promise 成功只表示 SDK 初始化完成,不表示用户已经登录或数据同步完成。初始化后应先注册事件,再调用 login()。
销毁 SDK
只有进程确定不再使用 SDK,并且所有并发调用、宿主监听器和用户会话都已结束时,才调用 unInitSDK():
await sdk.logout();
await sdk.unInitSDK();页面卸载、路由切换或单个 2in1 窗口关闭不应触发全局销毁。重新初始化前必须等待上一次销毁完成。
这个页面有帮助吗?