云信 UI 组件,全名 Netease Instant Message Kit
,简称 NIMKit
,是一款开源的聊天组件,并支持二次开发。开发者只需进行少量配置,就能打造出属于自己的聊天界面。通过一些自定义设置,也可以轻松添加业务相关功能,如阅后即焚、红包、点赞等。NIMKit 底层依赖 NIMSDK
,由网易开发的 IM SDK,可以轻松快速地将 IM 功能集成到您的 App 中。
在开发第一个 IM App 时,聊天界面的 ViewController 通常会成为项目开发中的泥潭。随着项目推进和需求迭代,聊天界面 ViewController 往往会变成庞大的 ViewController,所有聊天界面相关的代码都堆积在一起,整个 ViewController 的代码行数可能轻松超过一千行,难以很好地解耦。
聊天界面代码臃肿的原因通常包括
在 iOS 开发中,大牛们为我们总结出各种方法来进行各个模块的解耦,大方向上有
在细节上,还有使用组合、抽取数据源等小技巧。但对于一些经验不足的 iOS 开发者来说,做出一个优雅的聊天界面 ViewController 仍然是一件难事。
在开发云信的前期,我们虽然也意识到了这方面的困难,在提供云信 SDK 的同时也开源了相应的 Demo 源码,意在提供一个较为优雅的实现参考。但对于接入的开发者来说,成本仍然过高。这也是这个组件库的由来和目的:在不编写任何代码的情况下,也能轻松实现聊天界面。
我们强烈
不推荐您使用手动导入的方式来集成 NIMKit
,但如果您一定要这么做,可以参考这个文档。
NIMKit
提供了两个最重要的类
NIMSessionViewController
NIMSessionListViewController
前者用于会话界面的显示和交互,后者提供了最近会话功能。在集成 NIMSDK
并完成基本设置后,直接调用这两个类即可得到完善的聊天界面和会话列表。
初始化聊天界面时,上层需要传递当前聊天界面对应的会话信息,即 NIMSession
NIMSession *session = [NIMSession session:uid type:NIMSessionTypeP2P];
NIMSessionViewController *vc = [[NIMSessionViewController alloc] initWithSession:session];
[self.navigationController pushViewController:vc animated:YES];
初始化会话列表不需要任何前置条件,直接初始化即可。
NIMSessionListViewController *vc = [[NIMSessionViewController alloc] init];
最近会话进入会话 | 群组会话 | 发送多张图片 |
---|---|---|
![]() |
![]() |
![]() |
发送语音 | 发送地理位置 | 发送中与发送失败,点击叹号可重发 |
---|---|---|
![]() |
![]() |
![]() |
自定义消息-阅后即焚示例 | 最近联系人选择器 | 最近会话删除与未读删除 |
---|---|---|
![]() |
![]() |
![]() |
在不做任何修改的情况下,直接套用 NIMKit
组件,即可达到上述效果。但不同的产品可能会有不同的定制化需求,相关需求参考以下内容
1.《项目结构介绍》