NIMKit 3.7.0

NIMKit 3.7.0

测试测试版
语言语言 Obj-CObjective C
许可证 MIT
发布最后一次发布2021年12月

yuanwenhaiWenchao DinggenningEmilyzywyuanyuanYulongfanghetaojinliangSevenunclerzhangjianfang02chenjili 维护。



NIMKit 3.7.0

  • 网易 IM 团队

推荐客户得比特币/京东卡,现在推荐使用网易云信,最低得0.02BTC或3000元京东卡/单,点击参与https://yunxin.163.com/promotion/recommend

网易云信 UI 组件 · iOS

Build Status Pod Version Pod Platform Minimum Requirement LICENSE

简介

云信 UI 组件,全称 Netease Instant Message Kit,简称 NIMKit,是一款开源的聊天组件,并支持二次开发。开发者只需要稍作配置就可以打造出属于自己的聊天界面,而通过一些自定义的设置,也可以轻松添加业务相关的功能,如阅后即焚,红包,点赞等功能。NIMKit 底层依赖 NIMSDK,是一款由网易开发的 IM SDK,通过它可以轻松快速地在您的 App 中集成 IM 功能。

源起

在一个开发首次做 IM App 时,聊天界面的 ViewController 往往会变成项目开发中的泥潭,随着项目推进和需求迭代,聊天界面 ViewController 往往会变成 Massive View Controller,所有聊天界面相关的代码都堆积在一起,整个 ViewController 的代码轻松就上千行,难以解耦。

造成聊天界面代码臃肿的原因往往有

  • 消息种类繁多,没有做好归类与统一,代码可拓展性低
  • 聊天界面 UI 元素,事件,回调众多,没有合理解耦

而在日常的 iOS 开发中,大牛们为我们总结出各种方法来进行各个模块的解耦,大方向上有

  • MVCS
  • MVP
  • MVVM
  • VIPER

在细节上,还有一些使用组合,抽取数据源等小技巧。但对于一些经验不足的 iOS 开发者而言,仍很难做出一个优雅的聊天界面 ViewController。

在开发云信的前期,尽管我们也意识到了这方面的困难,并随云信 SDK 开源了相应的 Demo 源码,意在提供参考实现,但对于接入的开发者而言,成本仍然很高。这也是这个组件库的由来和目的:让开发者在不写任何一行代码的情况下,也能轻松实现聊天界面。

集成环境

  • 编译版本 : iOS SDK 10.0 及以上。
  • 操作系统 : iOS 8.0 及以上。

集成说明

Cocoapods 集成

我们建议你通过 Cocoapods 来进行 NIMKit 的集成,在 Podfile 中加入以下内容

pod 'NIMKit'

需要注意的是默认 NIMKit 依赖于 轻量版本NIMSDK,而 完整版本NIMSDK 不仅有 IM 模块,也有音视频模块。对于很多产品而言,只需要接入单纯的 IM 模块,这样可以减少对不必要模块的依赖,进而减少 App 体积。所以我们有两个版本的组件可供选择,安装完组件之后,则不必再安装 NIMSDK 依赖。

  • 轻量版本

    pod 'NIMKit'

    pod 'NIMKit/Lite'
  • 完整版本

    pod 'NIMKit/Full'

Swift 集成

由于使用 Swift 开发的第三方库不支持编译为静态库,NIMKit 和这些库同时使用 Cocoapods 的时候会出现一些问题,具体解决方案可以参考这个文档

手动集成

我们不推荐使用手动导入的方式集成 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 = [[NIMSessionListViewController alloc] init];

集成效果

最近会话进入会话 群组会话 发送多张图片
image image image
发送语音 发送地理位置 发送中与发送失败,点击叹号可重发
image image image
自定义消息-阅后即焚示例 最近联系人选择器 最近会话删除与未读删除
image image image

定制化

在不做任何修改,直接套用 NIMKit 组件,就能够达到上述效果。但不同的产品往往会有不同的定制化需求,定制化需求参考

1.《项目结构介绍》

2.《界面排版自定义》

3.《新消息类型集成》

4.《用户信息自定义》

5.《机器人消息排版指南》

更新日志

您可以在 这里 查看组件 2.1.0 版本之后的所有更新信息