之前虽然稍微了解过即时通讯方面的内容,但是一直没有怎么去做过聊天部分的。这次是刚刚使用融云,做一下记录。

关于融云SDK集成的具体步骤,我都是参考以下这些文章(很多图片都是直接从这些地方拿的,我真是太懒了),链接在这里:

https://www.jianshu.com/p/eabfb0a93cf9

https://www.cnblogs.com/ithongjie/p/5036383.html

还有融云的官方指南:http://www.rongcloud.cn/docs/ios.html

代码下载:

https://github.com/AmoAmoAmo/RongChat

1.首先打开融云官网http://www.rongcloud.cn/,注册自己的账户,并登陆。

2.点击左边创建应用,在打开的小窗口填写你的项目的一些信息(如果正在开发阶段可以选择未运营商务用户,如果项目上线后是需要提交申请审核)。

3.点击创建 点击我的应用 然后在左边点击我的应用名称

4.点击AppKey进入。里面包含开发环境和生产环境,不同环境下的App Key是不一样的,融云基本是免费的,但是他会提供给你一些付费的服务(视自己项目而定)。记录好App Key,因为在后面工程中需要。融云开发环境允许100个测试用户,如果超过了100个测试用户,需要在后台手动添加用户,一次只能添加20个。

5.导入SDK到项目。需要什么功能就导入哪一个sdk模块,这里只需要简单的聊天功能加聊天界面,所以导入融云 IM 通讯能力库 - RongCloudIM/IMLib

融云 IM 界面组件 - RongCloudIM/IMKit),融云支持下载到本地手动导入,但是用cocoapods挺方便的,这里就用cocoapods导入

1)创建一个工程,并创建podfile配置文件

cd 到你的项目路径

然后:输入touch podfile 或者 pod init (会自动生成podfile文件)

pod init后直接继续:

pod install

这就成功了,然后再看看你的项目路径里面,是不是多出来很多文件?

如下图:

2)写podfile文件:

3)在终端 pod install:

(之前写了好多,今天发现忘记保存了。。。)

6.获取Token

连接融云服务器的时候需要传给融云服务器一个token,相当于登录融云的一个"用户名",这个"用户名"是你们后台服务器集成的事情,所以你不用管,到时候后台会在你需要的地方返回给你这个token。在测试的时候需要我们在融云控制台获取一个测试的token,用来登录。方法如下

7,SDK集成

1)初始化

在项目中AppDelegate.h文件中导入头文件

#import然后遵守RCIMConnectionStatusDelegate代理

初始化

//初始化融云SDK。

[[RCIM sharedRCIM] initWithAppKey:MY_APPKEY];

2)连接服务器

[[RCIM sharedRCIM] connectWithToken:MY_TOKEN success:^(NSString *userId) {

// [[RCIM sharedRCIM] setUserInfoDataSource:self];

NSLog(@"登陆成功。当前登录的用户ID:%@", userId);

} error:^(RCConnectErrorCode status) {

NSLog(@"登陆的错误码为:%ld", (long)status);

} tokenIncorrect:^{

//token过期或者不正确。

//如果设置了token有效期并且token过期,请重新请求您的服务器获取新的token

//如果没有设置token有效期却提示token错误,请检查您客户端和服务器的appkey是否匹配,还有检查您获取token的流程。

NSLog(@"token 无效 ,请确保生成token 使用的appkey 和初始化时的appkey 一致");

}];

此时即可运行了,打印如下:

3)会话列表

融云 IMKit 已经实现了一个默认的会话列表视图控制器,您直接使用或继承 RCConversationListViewController,即可快速启动和使用会话列表界面。

首先,新建一个类继承自RCConversationListViewController。

并在.m文件的- (void)viewDidLoad方法中设置需要显示哪些类型的会话以及哪些类型的会话可以在会话列表页面聚合显示。如下:

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

//设置需要显示哪些类型的会话

[self setDisplayConversationTypes:@[@(ConversationType_PRIVATE),

]];

//设置需要将哪些类型的会话在会话列表中聚合显示

[self setCollectionConversationType:@[@(ConversationType_DISCUSSION),

@(ConversationType_GROUP)]];

}

这样一个回话列表界面就已经集成完成,我们可以在融云控制着后台发送一条测试消息,看一下回话列表能不能收到消息。

然后马上就能在会话列表看到一条刚刚收到的消息

点击会话列表,进入聊天会话界面

在自定义的会话列表 View Controller 中加入以下代码,即可点击进入聊天会话界面。

//重写RCConversationListViewController的onSelectedTableRow事件

- (void)onSelectedTableRow:(RCConversationModelType)conversationModelType

conversationModel:(RCConversationModel *)model

atIndexPath:(NSIndexPath *)indexPath {

// 初始化一个聊天页面

RCConversationViewController *conversationVC = [[RCConversationViewController alloc]init];

conversationVC.conversationType = model.conversationType;

conversationVC.targetId = model.targetId;

conversationVC.title = @"想显示的会话标题";

[self.navigationController pushViewController:conversationVC animated:YES];

}运行结果如下:

其中我又加了其他一些如tabbar、导航栏,还有聚合显示等,具体可以去看我的代码,效果如下:

4)设置会话的头像和昵称,昵称的字体颜色等等

在AppDelegate.h中设置RCIMUserInfoDataSource代理,连接成功后 设置代理(用户信息代理)

当融云服务器连接成功后 设置代理(用户信息代理)

[[RCIM sharedRCIM] setUserInfoDataSource:self];

实现代理方法:

// 设置会话的头像和昵称等 是好友的头像和昵称,不是自己的

- (void)getUserInfoWithUserId:(NSString *)userId

completion:(void (^)(RCUserInfo *userInfo))completion

{

NSLog(@"------ userID = %@ ---------", userId);

// 设置用户头像

if ([userId isEqualToString:@"199"]) {

RCUserInfo *userInfo = [[RCUserInfo alloc] init];

userInfo.userId = userId;

userInfo.name = @"小月月";

userInfo.portraitUri = @"https://img-blog.csdn.net/20180401185902182";

return completion(userInfo);

}

if ([userId isEqualToString:@"888"]) {

RCUserInfo *userInfo = [[RCUserInfo alloc] init];

userInfo.userId = userId;

userInfo.name = @"baby";

userInfo.portraitUri = @"https://img-blog.csdn.net/2018032015362964";

return completion(userInfo);

}

return completion(nil);

}

设置昵称颜色:

- (void)willDisplayConversationTableCell:(RCConversationBaseCell *)cell

atIndexPath:(NSIndexPath *)indexPath

{

RCConversationModel *model = self.conversationListDataSource[indexPath.row];

if (model.conversationType == ConversationType_PRIVATE) {

RCConversationCell *conversationCell = (RCConversationCell *)cell;

// 设置昵称的字体颜色

conversationCell.conversationTitle.textColor = [UIColor redColor];

}

}

ios 融云 重写对话列表_iOS集成融云SDK part 1 小记相关推荐

  1. Git Git 第九章 国内代码托管中心 码云 -- 码云(简介 码云帐号注册和登录 码云创建远程库 IDEA 集成码云 导入GitHub项目)

    1. 简介 众所周知,GitHub 服务器在国外,使用 GitHub 作为项目托管网站,如果网速不好的话,严重影响使用体验,甚至会出现登录不上的情况.针对这个情况,大家也可以使用国内的项目托管网站-码 ...

  2. ios浏览器微信支付回调页面_iOS集成H5微信支付实现跳转与回调的解决方案

    前言 最近有个需求,不能在iOS客户端内集成支付宝和微信的App支付SDK(为了防苹果审核检测SDK),因此使用H5支付,虽然微信和支付宝的H5支付文档都说不要在App内使用H5支付而是使用App支付 ...

  3. 华为云交付项目服务器配置表,云服务器设备配置列表

    云服务器设备配置列表 内容精选 换一换 当您在华为云上部署了弹性云服务器以及其他云服务,想在关联VPC内通过内网域名实现互访,可以为弹性云服务器配置内网域名解析.内网域名可以随意创建,无需注册,只需要 ...

  4. 云免流控服务器响应失败,云免流服务器是否违法

    云免流服务器是否违法 内容精选 换一换 在弹性云服务器上安装完成后输入公网IP,无法连接目的虚拟机,端口无法访问工具.源端网络未连通目的端.目的端安全组未开放8084端口.目的端网络ACL禁用了808 ...

  5. iOS 关于集成融云IM的一些常用方法

    容我磨叽一下 即使我也知道看这篇文章的人是不会看的,但是我还是想说啊,融云你们把文档好好写一下啦,APP什么的作为demo真的很鸡肋啊. 步入正题 这篇文章不是介绍集成融云的各种前期准备的(就是怎么注 ...

  6. android讨论功能,集成融云Android SDK实现在群聊/讨论组中@人的功能

    集成融云Android SDK实现在群聊/讨论组中@人的功能 可以确定的是融云SDK本身不提供@的功能,需要自定义实现. 在实现这个功能时,基本模仿微信的做法: 在列表中显示有人@了你 通知显示有人@ ...

  7. 项目中集成融云即时通讯

    http://blog.csdn.net/qq_28759359/article/details/52689948 项目中集成融云IM,能够单聊,离线能够收到消息,有聊天列表. 一我使用的是融云. I ...

  8. 融云--快速集成融云

    以下步骤都是建立在项目已经导入 IMKit的基础上的. 1.配置融云APPKEY 打开 IMKit 的 AndroidManifest 找到 以下内容并且替换为你自己的融云APPKEY. <me ...

  9. 集成融云 SDK 怎么实现多端同步未读数

    最近在集成融云 SDK 的时候,碰到了一个跟未读数有关的问题,现象是这样的: 比如我在其中 Web 端已经清除了某个会话的未读数然后退出,再换个设备登入,这个时候未读数还有,并没有清除掉,我就纳闷了, ...

最新文章

  1. 锚定比特币现金(BCH),助力构建价值互联网时代
  2. Struts2教程6:在Action类中获得HttpServletResponse对象的四种方法
  3. oracle统计一个班男生女生,一条sql统计一个班级的男女人数
  4. 对话尹成杰三农谋定压舱石-农业大健康·万祥军:稳农保供
  5. kafka副本数据同步策略
  6. 采用随机的'User-Agent'提高博客的访问量
  7. python论文参考文献5篇_“送”5篇SCI论文,意味着什么?
  8. NSLog各数据类型的输出
  9. linux+html5+开发工具,记不住 Linux 命令?这三个工具可以帮你
  10. AndroidICS4.0----LockScreen锁屏流程【Android源码解析九】
  11. Inside NT Boot
  12. 这四大配音神器你用过几个?哪个好用?
  13. matlab 填充透明色,在Matlab中使用透明像素填充数组
  14. 拯救者R7000ubuntu18.04解决分屏问题(NVIDIA显卡驱动安装)
  15. 主成分分析 PCA 线性判别分类LDA
  16. python中leap是什么意思_您知道leap是什么意思吗?
  17. 如果显示直播连接不成功问题
  18. 通过监控Nginx日志来实时屏蔽高频恶意访问的IP
  19. JTAG篇(2)——FT2232H 控制 JTAG TAP
  20. Apache ShardingSphere

热门文章

  1. springmvc--sso单点登录cas统一身份认证器
  2. 浅谈联网汽车安全漏洞
  3. Linux下USB设备自动复位的软件实现
  4. SWAT模型学习小技巧(二)
  5. 阿里云mysql 连接数_阿里云mysql最大连接数
  6. Python爬取云南统计局数据报表
  7. C和指针知识点梳理一
  8. 女人做什么生意最赚钱?什么行业适合女性创业者?
  9. [LAMPP] 低成本搭建一个个人PHP经营性网站 (StepByStep)
  10. linux c语言 utf8转gbk,GBK(gb2312)和UTF-8互转(转载)