初始化 HarmonyOS SDK
更新时间: 2026/08/14 11:35:17
本文介绍如何初始化适配鸿蒙系统的 V10 系列网易云信即时通讯 SDK(简称 NIM SDK)。
调用时机
对 NIM SDK 进行初始化的时机,是在调用各项即时通讯功能之前。一般情况下,在应用的生命周期内,仅需创建一个默认实例。
请勿使用相同的 instanceId 重复调用 newInstance;销毁实例后如需重新创建,应等待销毁完成。
前提条件
初始化 NIM Harmony SDK 前,请确保您已经完成了以下操作:
- 集成 SDK。
- 在 网易云信控制台 上 创建应用,并获取 App Key。App Secret 仅供服务端使用,请勿写入客户端代码或安装包。
- 注册网易云信 IM 账号,获取 IM 账号和 token。
第一步:注册服务
在调用 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。
此文档是否对你有帮助?




