初始化 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 的配置参数

公有云客户通常无需配置 linkLbsUrlslbsUrlslinkUrl,使用 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

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