更新记录

1.0.0(2026-07-30) 下载此版本

首次发布,覆盖 Android / iOS / Harmony 三端,桥接网易云信 V10 原生 SDK。

通用

  • 提供 initNIMSDK 统一初始化入口,通过 // #ifdef APP-ANDROID / APP-IOS / APP-HARMONY 在同一份业务代码中按平台构造 SDKOptions。
  • 三端 Service 接口形态一致,均通过 new <Service>() 获取实例,异步方法统一返回 Promise<NIMResult<T>>,业务侧按 res.code == 200 判定成功。
  • 已桥接的服务:V2NIMLoginServiceV2NIMUserServiceV2NIMFriendServiceV2NIMMessageServiceV2NIMMessageCreateV2NIMMessageConvertV2NIMConversationServiceV2NIMLocalConversationServiceV2NIMConversationGroupServiceV2NIMConversationIdUtilsV2NIMTeamServiceV2NIMStorageServiceV2NIMSettingServiceV2NIMSubscriptionServiceV2NIMStatisticsServiceV2NIMPassthroughServiceV2NIMNotificationService
  • 跨端技术栈种类与版本号由 utssdk/types/CrossPlatformMeta.uts 统一维护,三端 init 自动透传。

平台差异(仅初始化入参与依赖)

  • Android:SDKOptions 类为 AndroidSDKOptions,minSdkVersion 21;依赖 com.netease.nimlib:basesdk:10.10.10com.netease.nimlib:chatroom:10.10.10,由 utssdk/app-android/config.json 声明,编译时自动合并进 Gradle。
  • iOS:SDKOptions 为字面量对象 { appKey },deploymentTarget 13.0;依赖 NIMSDK_LITE 10.10.10,由 utssdk/app-ios/config.json 声明,编译时自动合并进 Podfile。
  • Harmony:SDKOptions 类为 HarmonySDKOptions,HarmonyOS 5.0+;依赖 @nimsdk/nim@nimsdk/base@nimsdk/conversation@nimsdk/localconversation@nimsdk/search@nimsdk/message@nimsdk/team@nimsdk/user@nimsdk/friend@nimsdk/signalling(均 10.10.10),由 utssdk/app-harmony/config.json 声明,编译时自动合并进 oh-package.json5

三端原生 SDK 依赖由各平台 utssdk/<platform>/config.json 声明,编译时自动合并进 Gradle / Podfile / oh-package.json5,无需手动改原生工程。


平台兼容性

uni-app(3.99)

Vue2 Vue3 Chrome Safari app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本
× × × × 1.0.0 1.0.0 7.0 1.0.0 13 1.0.0 17 1.0.0
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(3.99)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 7.0 13 17 ×

nim-uts-sdk

网易云信 IM SDK 的 UTS 封装,一套代码同时编译到 Android / iOS / Harmony 三端。异步接口统一返回 Promise

安装

通过 HBuilderX 插件市场安装,插件会落到 uni_modules/nim-uts-sdk/import 路径即 @/uni_modules/nim-uts-sdk

三端原生 SDK 依赖由各平台 utssdk/<platform>/config.json 声明,编译时自动合并进 Gradle / Podfile / oh-package.json5,无需手动改原生工程。

快速开始:初始化 + 登录

import {
  initNIMSDK,
  NIMInitSuccess,
  NIMFail,
  V2NIMLoginService,
  V2NIMLoginListener,
  V2NIMDataSyncLevel
} from '@/uni_modules/nim-uts-sdk'

// #ifdef APP-ANDROID
import { AndroidSDKOptions } from '@/uni_modules/nim-uts-sdk'
// #endif
// #ifdef APP-HARMONY
import { HarmonySDKOptions } from '@/uni_modules/nim-uts-sdk'
// #endif

const APP_KEY = 'your_app_key'
const ACCOUNT_ID = 'your_accid'
const TOKEN = 'your_token'

// 1. 按平台构造 SDKOptions(仅 appKey 是必填,其余字段按需设置)
// #ifdef APP-ANDROID
const sdkOptions = new AndroidSDKOptions()
// #endif
// #ifdef APP-HARMONY
const sdkOptions = new HarmonySDKOptions()
// #endif
// #ifdef APP-IOS
const sdkOptions = { appKey: APP_KEY }
// #endif
sdkOptions.appKey = APP_KEY

// 2. 初始化 SDK
initNIMSDK({
  options: sdkOptions,
  success(res: NIMInitSuccess) {
    console.log('init ok', res)
  },
  fail(err: NIMFail) {
    console.error('init fail', err)
  }
})

// 3. 登录
const loginService = new V2NIMLoginService()

loginService.addLoginListener({
  onLoginStatus(status) {
    console.log('login status', status)
  },
  onLoginFailed(error) {
    console.error('login failed callback', error)
  }
} as V2NIMLoginListener)

loginService.login(ACCOUNT_ID, TOKEN, {
  syncLevel: V2NIMDataSyncLevel.V2NIM_DATA_SYNC_TYPE_LEVEL_FULL
}).then((res) => {
  if (res.code == 200) {
    console.log('login ok', res.data)
  } else {
    console.error('login fail', res)
  }
})

三端 login 均返回 Promise<NIMResult<T>>,业务侧按 res.code == 200 判定成功,res.data 取结果。iOS 端 V2NIMLoginAuthType 尚未桥接导出,登录 option 暂只填 syncLevel

服务一览

通过 new <Service>() 获取实例,常用服务:

服务 说明
V2NIMLoginService 登录、登出、连接状态、监听
V2NIMUserService 用户资料、黑名单、好友
V2NIMFriendService 好友关系管理
V2NIMMessageService 消息收发、查询、撤回、删除
V2NIMMessageCreate 构造文本/图片/语音等消息
V2NIMMessageConvert 消息序列化与反序列化
V2NIMConversationService 会话列表、未读、置顶
V2NIMLocalConversationService 本地会话管理
V2NIMConversationGroupService 会话分组
V2NIMConversationIdUtils 会话 ID 生成与解析(原生 SDK 类名为 V2NIMConversationIdUtil,uts 层统一加 s,见下文「命名差异」)
V2NIMTeamService 群与超级群
V2NIMStorageService 云端存储
V2NIMSettingService 用户设置
V2NIMSubscriptionService 在线状态订阅
V2NIMStatisticsService 统计上报
V2NIMPassthroughService 透传
V2NIMNotificationService 通知

三端服务清单一致,差异只在初始化入参(见上文 // #ifdef 部分)。

命名差异:V2NIMConversationIdUtils vs 原生 V2NIMConversationIdUtil

三端原生 SDK 中会话 ID 工具类叫 V2NIMConversationIdUtil(单数)。为与 uts 层「工具类用复数」的命名约定一致(参考 V2NIMMessageCreator/V2NIMMessageConverter 两侧并行命名),本插件统一导出为 V2NIMConversationIdUtils(带 s)。

// 正确
import { V2NIMConversationIdUtils } from '@/uni_modules/nim-uts-sdk'
const util = new V2NIMConversationIdUtils()
util.p2pConversationId(accountId)

调用方法与原生 V2NIMConversationIdUtil 完全一致(p2pConversationId / teamConversationId / superTeamConversationId / conversationType / conversationTargetId / isConversationIdValid 等),无逻辑差异,仅类名加 s

升级原生 SDK 版本

原生 SDK 版本号集中声明在三端各自的 config.json 中,不集中在任何统一文件。升级时改这三处即可:

平台 文件 字段
Android utssdk/app-android/config.json dependencies 数组里 com.netease.nimlib:basesdk:<version> / com.netease.nimlib:chatroom:<version>
iOS utssdk/app-ios/config.json dependencies-podsNIMSDK_LITEversion
Harmony utssdk/app-harmony/config.json dependencies 对象里 @nimsdk/* 的版本号

例如从 10.10.10 升到 10.11.0

// utssdk/app-android/config.json
- "com.netease.nimlib:basesdk:10.10.10",
- "com.netease.nimlib:chatroom:10.10.10"
+ "com.netease.nimlib:basesdk:10.11.0",
+ "com.netease.nimlib:chatroom:10.11.0"

// utssdk/app-ios/config.json
- "version": "10.10.10"
+ "version": "10.11.0"

// utssdk/app-harmony/config.json
- "@nimsdk/nim": "10.10.10",
- "@nimsdk/base": "10.10.10",
+ "@nimsdk/nim": "10.11.0",
+ "@nimsdk/base": "10.11.0",
  ...(其余 @nimsdk/* 同步改)

注意事项:

  • 三端必须升级到同一原生 SDK 版本,避免跨端行为不一致。
  • 升级后建议同步更新 changelog.md 记录版本。
  • 若新版本带来新的初始化字段或 API,需要回到 utssdk/<platform>/ 对应 Service / Options 文件补充桥接字段后才能在 uts 层使用。
  • utssdk/types/CrossPlatformMeta.utsCROSS_PLATFORM_VERSION 是跨端技术栈版本号,与原生 SDK 版本无关,不要混淆。

原生 API 参照文档

uts 层是对原生 V10 SDK 的桥接封装,方法签名与语义以原生为准。遇到字段含义、取值枚举、回调时序等疑问,请对照官方文档:

  • 云信 IM 客户端 API:https://doc.yunxin.163.com/messaging2/client-apis?platform=client

跨端版本标记维护

uts 层向原生 SDK 透传的「跨端技术栈种类」与「跨端技术栈版本号」(v10.10.10+ 原生 SDK 初始化参数)统一由 utssdk/types/CrossPlatformMeta.uts 控制:

  • CROSS_PLATFORM_TYPE — 跨端技术栈种类(当前 112,对应 uni-app-x)
  • CROSS_PLATFORM_VERSION — 跨端技术栈版本号(当前 '1.0.0')

Android 与 Harmony 两端 init 脚本均 import 该文件并赋给原生 SDK 初始化 options。升级或调整跨端标记时,只需改这一个文件的两行常量,两端自动生效。

不要把 crossPlatformType 写回 package.json:uts 运行时无法读取 package.json,故该字段不再承载于 package.json,而由 CrossPlatformMeta.uts 作为唯一来源。package.jsonversion 是插件自身版本,与 CROSS_PLATFORM_VERSION 是两个独立概念,无需强制同步。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

- android.permission.INTERNET - android.permission.ACCESS_NETWORK_STATE

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。