浏览 SDKs · HarmonyOS
平台
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);

参数说明

参数类型是否必填说明
apiAddrstringOpenIMServer API 地址。
wsAddrstringOpenIMServer WebSocket 地址。
dataDirdbPathstring应用私有的稳定可写目录;同一进程内的窗口应保持一致。
logFilePathstringSDK 日志目录;未设置时由当前发行包的默认行为决定。
appFrameworkAppFramework原生 ArkTS 应用使用 AppFramework.Native
platformPlatformHarmonyOS 使用 Platform.HarmonyOS
logLevelLogLevelSDK 日志级别。
isLogStandardOutputboolean是否把 Core 日志输出到系统日志。
StopGoroutineOnBackgroundboolean手机和平板通常设为 true;持续运行的 2in1 进程可按生命周期策略设为 false
LogRemainCountnumber本地日志文件保留数量。
diagnoseHashSaltstring诊断哈希使用的应用级稳定字符串。
httpClientModeHttpClientModeHTTP 连接策略,通常使用 HttpClientMode.ConnFirst

Promise 成功只表示 SDK 初始化完成,不表示用户已经登录或数据同步完成。初始化后应先注册事件,再调用 login()

销毁 SDK

只有进程确定不再使用 SDK,并且所有并发调用、宿主监听器和用户会话都已结束时,才调用 unInitSDK()

await sdk.logout();
await sdk.unInitSDK();

页面卸载、路由切换或单个 2in1 窗口关闭不应触发全局销毁。重新初始化前必须等待上一次销毁完成。