版本区分
更新时间: 2025/01/09 16:32:15
网易云信即时通讯界面组件(简称 IM UIKit)是基于 NIM SDK(网易云信 IM SDK) 开发的一款即时通讯 UI 组件库,包括聊天、会话、圈组、搜索、通讯录、群管理等组件。
本文介绍安卓端和 iOS 端 9.x.x 系列版本和 10.x.x 系列版本 IM UIKit 之间的使用区别,适用于从 0.x.x~9.x.x 系列版本 IM UIKit 升级至 10.x.x 系列版本 IM UIKit 的开发者。
版本说明
10.x.x 系列版本 UIKit 在底层模块进行了比较大的升级,造成与 9.x.x 系列版本 UIKit 之间的接口变更。同时,10.x.x 系列版本 UIKit 对定制接口也进行了简单的调整。
-
IM UIKit 版本号为 0.x.x~9.x.x 都概指 V9 系列版本。底层依赖 0.x.x~9.x.x 系列版本 NIM SDK。
-
IM UIKit 版本号为 10.x.x 都代表 V10 系列版本。底层依赖 10.x.x 系列版本 NIM SDK。
两个系列 UIKit 的最新版本号,请参考对应开发平台 更新日志。
变更总览
IM UIKit V9 系列版本和 V10 系列版本组件以及相关依赖仓库变更如下表所示:
| 组件库 | V9 | V10 安卓 | V10 iOS | 变更说明 |
|---|---|---|---|---|
| 聊天 | chatkit-ui | chatkit-ui | NEChatUIKit | 变化大。接口变更造成 UI 层改动较大。 |
| 通讯录 | contacttkit-ui | contacttkit-ui | NEContactUIKit | |
| 会话列表 | conversationkit-ui | conversationkit-ui | NEConversationUIKit | |
| 群管理 | teamkit-ui | teamkit-ui | NETeamUIKit | |
| AI 数字人 | - | aisearchkit | NEAISearchKit | 新增。提供 AI 数字人功能。 |
| 组件通用库 | common-ui | common-ui | NECommonUIKit | 变化小。除新增功能无变化。 |
| common | common | NECommonKit | ||
| 底层框架库 | corekit | corekit | NECoreKit | 无变化。 |
| 组件逻辑库 | chatkit | chatkit | NEChatKit | 变化大。基于 10.x.x NIM SDK 重新开发,同时将部分原 corekit 能力迁移到该库中。 |
| 底层封装 NIM SDK 接口库 | corekit-im | corekit-im2 | NECoreIM2Kit | 变化大。NIM SDK 0.x.x~9.x.x 到 10.x.x 版本差异较大,所以新建该仓库,用于区分 0.x.x~9.x.x 接口库。 |
| 插件底层库 | - | corekit-plugin | - | 新增。插件底层库,服务于 aisearchkit AI 数字人。 |
corekit-im 库变更
迁移 Repo 代码
将原 0.x.x~9.x.x corekit-im 中的 Repo 相关接口迁移到 10.x.x 的 chatKit 中:
| corekit 类 | chatkit 类 | 说明 |
|---|---|---|
| MiscRepo | MiscRepo | 类迁移,接口保持不变。 |
| CommonRepo | ContactRepo |
|
| - | ResourceRepo | 文件上传下载相关接口,迁移到 ResourceRepo。 |
| SettingRepo | SettingRepo | 0.x.x~9.x.x 系列版本的 SettingRepo 中与 alias 相关的接口被移除,例如 getDeleteWithAlias、setDeleteWithAlias,10.x.x 系列版本中不再使用该功能。 |
迁移到 corekit-im2
将引用 corekit-im 的库迁移到了 corekit-im2 库中。将包名 com.netease.yunxin.kit.corekit.im.* 改为 com.netease.yunxin.kit.corekit.im2.*。例如,在 IMKIt-sample 中,Java 文件 IMApplication 的引用如下:
Java//0.x.x~9.x.x 引用
import com.netease.yunxin.kit.corekit.im.IMKitClient;
import com.netease.yunxin.kit.corekit.im.repo.SettingRepo;
import com.netease.yunxin.kit.corekit.im.utils.IMKitUtils;
import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
//10.x.x 引用
import com.netease.yunxin.kit.chatkit.repo.SettingRepo;
import com.netease.yunxin.kit.corekit.im2.IMKitClient;
import com.netease.yunxin.kit.corekit.im2.utils.IMKitUtils;
import com.netease.yunxin.kit.corekit.im2.utils.RouterConstant;
将引用 NECoreIMKit 的库迁移到了 NECoreIM2Kit 库中。
Swift//0.x.x~9.x.x 引用
import NECoreIMKit
//10.x.x 引用
import NECoreIM2Kit
接口及参数变更
由于底层 SDK 或者业务优化原因,对接口参数进行了部分调整,如果遇到参数变更,您需要重新调整。
以下列举初始化接口、登录接口、FetchCallback 接口的变更规律。其他接口的变更,基本采用此类规律。您可以按照此类方式找到新的类,或者对已有接口参照 IDE 提示进行参数调整。对新接口参数有疑问,请参考 10.x.x 接口文档 调整。
-
初始化接口变更:0.x.x~9.x.x
init接口支持免登录初始化,但是在 10.x.x 中不支持登录,请在初始化后,主动进行接口登录调用。AndroidJava//0.x.x~9.x.x 初始化 init(context: Context, loginInfo: LoginInfo?, appKey: String?) //10.x.x 初始化 init(context: Context, appKey: String?)iOSSwift//0.x.x~9.x.x 初始化 public func setupCoreKitIM(_ option: NIMSDKOption) //10.x.x 初始化 open func setupIM(_ option: NIMSDKOption) -
登录接口变更:接口参数因为 NIM SDK 的调整,UIKit 进行了调整。
AndroidJava// 0.x.x~9.x.x 登录 loginIM(info: LoginInfo, callback: LoginCallback<LoginInfo>?) //10.x.x 登录 login( account: String, token: String, option: V2NIMLoginOption?, callback: FetchCallback<Void>? )iOSSwift// 0.x.x~9.x.x 登录 public func loginIM(_ account: String, _ token: String, _ block: @escaping (Error?) -> Void) public func loginIM(account: String, token: String, authType: Int32, loginExt: String, _ block: @escaping (Error?) -> Void) //10.x.x 登录 open func login(_ accountId: String, _ token: String?, _ option: V2NIMLoginOption?, _ completion: @escaping (NSError?) -> Void) -
Fetchback 调整:
Android大部分需要异步回调的接口,回调都采用 FetchCallback 类,该接口的包以及接口进行了调整。
包调整:
-
0.x.x~9.x.x:
com.netease.yunxin.kit.corekit.im2.extend.FetchCallback -
10.x.x:
com.netease.yunxin.kit.corekit.im.provider.FetchCallback
Java// 0.x.x~9.x.x:com.netease.yunxin.kit.corekit.im2.extend.FetchCallback // 0.x.x~9.x.x FetchCallback 接口方法 new FetchCallback<Long>() { @Override public void onSuccess(@Nullable Long param) { } @Override public void onFailed(int code) {} @Override public void onException(@Nullable Throwable exception) {} }); //10.x.x:com.netease.yunxin.kit.corekit.im.provider.FetchCallback //10.x.x FetchCallback 接口方法 new FetchCallback<Long>() { @Override public void onSuccess(@Nullable Long aLong) { } @Override public void onError(int i, @Nullable String s) { } } -
chatkit 库变更
ChatKit 为 IM UIKit 组件的底层库,数据获取、变更以及监听都通过 Chatkit 中的库提供的类和接口。由于 10.x.x NIM SDK 的重新设计,所以 10.x.x 系列 UIKit 的 Chatkit 与 NIM 相关的接口(ChatRepo、ContactRepo、ConversationRepo、TeamRepo 等)无论接口名称和参数都与 0.x.x~9.x.x 有差异。如果在您的工程中使用到这些接口,请参考 IM UIKit 接口层文档(Android | iOS),切换到您需要的接口中。
ChatKit 的变更说明如下:
-
Repo 层接口变更:10.x.x 中采用与 SDK 相同的命名接口,并且参数中保持与 SDK 参数类型一致。
-
监听相关变更:不再使用 0.x.x~9.x.x 中 Observer(安卓)和 Delegate(iOS),10.x.x 采用
addLisener和removeListener接口分别添加和移除监听,接口都在对应的Repo中。 -
其他工具类或者 Kit 层能力:基本都保持不变,只进行了部分优化和微调。
定制接口变更
组件定制接口变更情况如下所示:
chatkit-ui 组件
-
消息 Item 单击事件。
撤回消息接口名称修改,接口名称
onReEditRevokeMessage变更为onReeditRevokeMessage。JavaChatUIConfig chatUIConfig = new ChatUIConfig(); chatUIConfig.messageItemClickListener = new IMessageItemClickListener() { @Override public boolean onReeditRevokeMessage( View view, int position, ChatMessageBean messageInfo ) { .... } }; ChatKitClient.setChatUIConfig(chatUIConfig); -
消息长按菜单定制接口变更。
IChatPopMenu接口中customizePopMenu方法入参和返回值变更,由List<ChatPopMenuAction>变更为List<PluginAction>。-
0.x.x~9.x.x 接口:
JavachatUIConfig.chatPopMenu = new IChatPopMenu() { @NonNull @Override public List<ChatPopMenuAction> customizePopMenu( List<ChatPopMenuAction> menuList, ChatMessageBean messageBean) { // 修改菜单列表的内容或者行为 return menuList; } @Override public boolean showDefaultPopMenu() { return true; } }; -
10.x.x 接口:
JavachatUIConfig.chatPopMenu = new IChatPopMenu() { @NonNull @Override public List<PluginAction> customizePopMenu( List<PluginAction> menuList, ChatMessageBean messageBean) { // 修改菜单列表的内容或者行为 return menuList; } @Override public boolean showDefaultPopMenu() { return true; } };
-
CoversationKit-ui 组件
-
会话列表外漏消息内容定制:主要在接口方法
customContentText的参数由ConversationInfo>V2NIMConversation。-
0.x.x~9.x.x 接口:
JavaconversationUIConfig.conversationCustom = new ConversationCustom(){ @Override public String customContentText(Context context, ConversationInfo conversationInfo){ // converstaionInfo 会话信息,包含会话和最近消息内容 return "";//返回您想展示的内容 } }; -
10.x.x 接口:
JavaconversationUIConfig.conversationCustom = new ConversationCustom(){ @Override public String customContentText(Context context, V2NIMConversation conversationInfo){ // converstaionInfo 会话信息,包含会话和最近消息内容 return "";//返回您想展示的内容 } };
-
-
会话列表 Item 定制接口
IConversationFactory提供定制将最近会话列表数据,转换为 Android Recycler Adapter 的加载数据。其中创建Adapter数据的方法CreateBean参数变更ConversationInfo>V2NIMConversation-
0.x.x~9.x.x
IConversationFactory接口定义:Javapublic interface IConversationFactory { //根据会话数据,创建 ViewHolder 中数据类 ConversationBean CreateBean(ConversationInfo info); //Adapter 获取数据对应的 ViewType int getItemViewType(ConversationBean data); //创建 ViewHolder BaseViewHolder<ConversationBean> createViewHolder(@NonNull ViewGroup parent, int viewType); } -
10.x.x
IConversationFactory接口定义:Javapublic interface IConversationFactory { //根据会话数据,创建 ViewHolder 中数据类 ConversationBean CreateBean(V2NIMConversation var1); //Adapter 获取数据对应的 ViewType int getItemViewType(ConversationBean var1); //创建 ViewHolder BaseViewHolder<ConversationBean> createViewHolder(@NonNull ViewGroup var1, int var2); }
-
类名变更
-
自定义示例代码,见
CustomConfig。 -
消息模块自定义配置类改为
ChatUIConfig。 -
会话模块自定义配置类改为
ConversationUIConfig。 -
通讯录模块自定义配置类改为
ContactUIConfig。
例如更改头像方圆类型:
-
0.x.x~9.x.x:
SwiftNEKitChatConfig.shared.ui.messageProperties.avatarType = .rectangle NEKitConversationConfig.shared.ui.conversationProperties.avatarCornerRadius = 4.0 NEKitContactConfig.shared.ui.contactProperties.avatarCornerRadius = 4.0 -
10.x.x:
SwiftChatUIConfig.shared.messageProperties.avatarType = .cycle ConversationUIConfig.shared.conversationProperties.avatarCornerRadius = 4.0 ContactUIConfig.shared.contactProperties.avatarCornerRadius = 4.0
配置项变更
-
支持发送的视频、文件大小限制移至
ChatUIConfig。 -
群未读显示限制数移至
ChatUIConfig。 -
0.x.x~9.x.x:
Swift// 发送视频、文件大小限制(单位:MB) NEKitChatConfig.shared.ui.fileSizeLimit // 群未读显示限制数,默认超过 200 人不显示已读未读进度 NEKitChatConfig.shared.maxReadingNum = 200 -
10.x.x:
Swift// 发送视频、文件大小限制(单位:MB) ChatUIConfig.shared.fileSizeLimit = 200 // 群未读显示限制数,默认超过 200 人不显示已读未读进度 ChatUIConfig.shared.maxReadingNum = 200
回调参数变更
回调参数中新增当前页面的 ViewController。例如消息长按弹出菜单单击事件回调。
-
0.x.x~9.x.x:
Swiftpublic var popMenuClick: ((OperationItem) -> Void)? -
10.x.x:
Swiftpublic var popMenuClick: ((ChatViewController, OperationItem) -> Void)?
其他变更
有关安卓端和 iOS 端 9.x.x 系列版本和 10.x.x 系列版本 IM UIKit 依赖的 IM SDK 的版本差异,请参考 SDK 版本区别。





