初始化 HarmonyOS SDK

更新时间: 2026/08/14 11:35:17

本文介绍如何初始化适配鸿蒙系统的 V10 系列网易云信即时通讯 SDK(简称 NIM SDK)。

调用时机

对 NIM SDK 进行初始化的时机,是在调用各项即时通讯功能之前。一般情况下,在应用的生命周期内,仅需创建一个默认实例。

请勿使用相同的 instanceId 重复调用 newInstance;销毁实例后如需重新创建,应等待销毁完成。

前提条件

初始化 NIM Harmony SDK 前,请确保您已经完成了以下操作:

第一步:注册服务

在调用 NIMSdk.newInstance 前,调用 NIMSdk.registerCustomServices 方法注册已引入并需要使用的业务服务。

参数说明

TypeScriptstatic registerCustomServices(serviceType: V2NIMProvidedServiceType, creator: V2ServiceCreator, instanceId: string = 'default')
参数 类型 说明
serviceType V2NIMProvidedServiceType 服务类型
creator V2ServiceCreator 服务构造器
instanceId string 实例 ID,默认为 default。注册服务与创建实例时必须使用相同的实例 ID,单实例接入通常无需显式传入。

示例代码

TypeScript// 根据业务,选择已引入且需要使用的服务进行注册
NIMSdk.registerCustomServices(V2NIMProvidedServiceType.V2NIM_PROVIDED_SERVICE_TEAM, (core, serviceName, serviceConfig) => new V2NIMTeamServiceImpl(core, serviceName, serviceConfig))
NIMSdk.registerCustomServices(V2NIMProvidedServiceType.V2NIM_PROVIDED_SERVICE_CLIENT_ANTISPAM_UTIL, (core, serviceName, serviceConfig) => new V2NIMClientAntispamUtil(core, serviceName, serviceConfig))
NIMSdk.registerCustomServices(V2NIMProvidedServiceType.V2NIM_PROVIDED_SERVICE_MESSAGE, (core, serviceName, serviceConfig) => new V2NIMMessageServiceImpl(core, serviceName, serviceConfig))
NIMSdk.registerCustomServices(V2NIMProvidedServiceType.V2NIM_PROVIDED_SERVICE_USER, (core, serviceName, serviceConfig) => new V2NIMUserServiceImpl(core, serviceName, serviceConfig))
NIMSdk.registerCustomServices(V2NIMProvidedServiceType.V2NIM_PROVIDED_SERVICE_FRIEND, (core, serviceName, serviceConfig) => new V2NIMFriendServiceImpl(core, serviceName, serviceConfig))
NIMSdk.registerCustomServices(V2NIMProvidedServiceType.V2NIM_PROVIDED_SERVICE_SIGNALLING, (core, serviceName, serviceConfig) => new V2NIMSignallingServiceImpl(core, serviceName, serviceConfig))

云端会话 和 本地会话 互斥,请根据业务选择其中一种方案进行注册。

  • 选择云端会话。若使用会话分组,还需同时注册 CONVERSATION_GROUP。

    TypeScriptNIMSdk.registerCustomServices(V2NIMProvidedServiceType.V2NIM_PROVIDED_SERVICE_CONVERSATION, (core, serviceName, serviceConfig) => new V2NIMConversationServiceImpl(core, serviceName, serviceConfig))
    NIMSdk.registerCustomServices(V2NIMProvidedServiceType.V2NIM_PROVIDED_SERVICE_CONVERSATION_GROUP, (core, serviceName, serviceConfig) => new V2NIMConversationGroupServiceImpl(core, serviceName, serviceConfig))
    
  • 选择本地会话。

    TypeScriptNIMSdk.registerCustomServices(V2NIMProvidedServiceType.V2NIM_PROVIDED_SERVICE_LOCAL_CONVERSATION, (core, serviceName, serviceConfig) => new V2NIMLocalConversationServiceImpl(core, serviceName, serviceConfig))
    

第二步:初始化

调用 newInstance 方法创建实例并实现初始化。

参数说明

TypeScriptstatic newInstance(context: common.Context, initializeOptions: NIMInitializeOptions, serviceOptions: NIMServiceOptions = {}, instanceId: string = 'default'): NIMInterface
参数 类型 说明
context common.Context 应用上下文,建议传入应用级 Context
initializeOptions NIMInitializeOptions SDK 的配置信息
serviceOptions NIMServiceOptions 业务服务的配置信息
instanceId string 实例 ID,默认为 default。必须与注册服务时使用的实例 ID 保持一致。

NIMInitializeOptions 的配置参数

参数 类型 是否必选 说明
appkey string 是 应用的 App Key,在 网易云信控制台 创建应用后获取。
loggerServiceConfig NIMLoggerConfig 否 日志模块配置,包括日志级别、是否输出控制台日志等。
encryptionSetting EncryptionSetting 否 使用 TCP 通信时的加密配置。公有云客户通常无需配置,SDK 默认使用增强加密方案。
xhrConnectTimeout number 否,默认为 30000 ms HTTP 请求默认超时时间。当调用方未显式设置连接超时或读取超时时,SDK 使用该值进行配置。
socketConnectTimeout number 否,默认为 30000 ms 建立长连接的超时时间。

NIMServiceOptions 的配置参数

参数 类型 是否必选 说明
loginServiceConfig NIMLoginServiceConfig 否 登录服务的配置参数。公有云客户通常无需配置连接地址,使用 SDK 默认配置即可。
messageServiceConfig NIMMessageServiceConfig 否 消息服务的配置参数。
friendServiceConfig NIMFriendServiceConfig 否 好友服务的配置参数。
pushServiceConfig NIMPushServiceConfig 否 推送服务的配置参数。
httpServiceConfig NIMHttpServiceConfig 否 HTTP 服务的配置参数,包括私有化相关配置。
databaseServiceConfig DatabaseOptions 否 数据库服务的配置参数。配置其中的 appKey 时,必须与 initializeOptions.appkey 保持一致。
storageServiceConfig NIMStorageServiceConfig 否 存储服务的配置参数。
conversationServiceConfig V2NIMConversationConfig 否 云端会话服务的配置参数。
localConversationServiceConfig V2NIMLocalConversationConfig 否 本地会话服务的配置参数。
teamServiceConfig V2NIMTeamConfig 否 群组服务的配置参数。
searchServiceConfig V2NIMSearchConfig 否 搜索服务的配置参数。

NIMLoginServiceConfig 的配置参数

公有云客户通常无需配置 linkLbsUrls、lbsUrls 和 linkUrl,使用 SDK 默认配置即可。SDK 默认通过公有云连接 LBS 获取 TCP 连接地址,并自动完成连接调度。仅私有化部署或存在自定义连接地址需求时,才需要配置以下地址。

参数 类型 是否必选 说明
linkLbsUrls string[] 否 通用连接 LBS 地址。公有云客户无需配置;私有化部署或自定义连接场景按实际地址配置。
lbsUrls string[] 否 WebSocket 连接 LBS 地址。未配置 linkLbsUrls 时,SDK 使用该列表获取 WebSocket 连接地址。公有云客户无需配置。
linkUrl string 否 WebSocket 静态备用地址。公有云客户无需配置;仅在需要自定义备用连接地址时配置。
customClientType number 否 自定义客户端类型,取值必须大于 0。
customTag string 否 自定义客户端标签,最大长度为 32 个字符。
isHttps boolean 否 是否使用 HTTPS 请求 WebSocket LBS。
supportProtocolFamily V2NIMProtocolFamily 否 需要支持的 IP 协议族。
lbsCacheExpirationInterval number 否,默认为 7 天 LBS 缓存有效期,单位毫秒。

示例代码

公有云客户无需配置连接地址,使用 SDK 默认配置即可。

TypeScriptconst initializeOptions: NIMInitializeOptions = {
  appkey: "your appkey",
  loggerServiceConfig: {
    logLevel: LogLevel.Debug,
    isOpenConsoleLog: true // 打开后可以将 NIM SDK 的日志输出到控制台
  }
}

const nim = NIMSdk.newInstance(context, initializeOptions)

仅私有化部署或存在自定义连接地址需求时,才需要传入对应的服务配置:

TypeScriptconst serviceOptions: NIMServiceOptions = {
  loginServiceConfig: {
    linkLbsUrls: ['YOUR_LINK_LBS_URL']
  }
}

const nim = NIMSdk.newInstance(context, initializeOptions, serviceOptions)

下一步

完成初始化后,您可以尝试 登录 IM。

此文档是否对你有帮助?
有帮助
去反馈
  • 调用时机
  • 前提条件
  • 第一步:注册服务
  • 参数说明
  • 示例代码
  • 第二步:初始化
  • 参数说明
  • 示例代码
  • 下一步