一、介绍

即时通讯在众多社交软件、生活软件以及教育软件中已经是必备的功能了,在当前国内,即时通讯SDK做的比较不错的有那么几家,例如环信SDK、融云SDK...,这两家做的都很不错,各有千秋吧,要是真让说出个不同,就我个人感觉融云的集成要更简单一些,就那么几步,有点开发基础都会,我之前在项目中集成过环信,解决了不少的坑才集成好。他们共同的特点就是,都只负责进行聊天,不管理好友之间的关系和用户的信息,它们都是在代理方法中设置用户的信息,包括姓名、昵称、头像等,环信中是通过IMessageModel模型直接设置,融云则是通过将RCUserInfo模型作为block的参数进行回调设置。

如果需要集成环信,可以看看我的集成过程:http://www.cnblogs.com/XYQ-208910/p/5396635.html

二、准备

(1)注册融云开发者账号:https://developer.rongcloud.cn/signup

(2)登录账号,在控制台创建应用获取AppKey和AppScrete

(3)找到调试API接口,手动获取token(这个融云最终要求是开发者从自己的服务器获取),此处只是在为开发环境测试所用

(4)在plist设置iOS9需要的https网络请求字段NAAppTransportSecurity

(5)如果对界面没有更高的定制要求,融云本身提供的所有聊天等界面已经足够使用,此时集成IMKit框架使用即可,推荐使用CocoaPods自动集成

三、集成

(1)生成Podfile文件,选择IM框架

platform :ios, '8.0'
target 'RongCloudKit' dopod 'RongCloudIM/IMLib', '2.8.0' //需要自己去定制UI界面pod 'RongCloudIM/IMKit', '2.8.0' //融云提供完善的UI界面
end

(2)安装后导入头文件即可使用

四、使用(RCIM是一个单例类,几乎很多重要的操作都是由这个类来完成的)

(1)注册融云APPKey

//注册融云APPKEY
[[RCIM sharedRCIM] initWithAppKey:APPKEY];

(2)登录融云服务器

//使用手动生成的token连接融云服务器进行登录[[RCIM sharedRCIM] connectWithToken:TOKEN success:^(NSString *userId) {NSLog(@"登陆成功。当前登录的用户ID:%@", userId);} error:^(RCConnectErrorCode status) {NSLog(@"登陆的错误码为:%ld", status);} tokenIncorrect:^{//token过期或者不正确。//如果设置了token有效期并且token过期,请重新请求您的服务器获取新的token//如果没有设置token有效期却提示token错误,请检查您客户端和服务器的appkey是否匹配,还有检查您获取token的流程。NSLog(@"token错误");}];

(3)显示聊天界面代码如下(此处我继承了原生会话类RCConversationViewController)

//  RongCloudConversationViewController.h
//  RongCloudKit
//
//  Created by 夏远全 on 16/12/17.
//  Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved.
//

#import <RongIMKit/RongIMKit.h>@interface SystemConversationViewController : RCConversationViewController@end

//  RongCloudConversationViewController.m
//  RongCloudKit
//
//  Created by 夏远全 on 16/12/17.
//  Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved.
//

#import "SystemConversationViewController.h"@interface SystemConversationViewController ()<RCIMUserInfoDataSource>@end@implementation SystemConversationViewController-(instancetype)init{self = [super init];//设置会话的类型,如单聊、讨论组、群聊、聊天室、客服、公众服务会话等self.conversationType = ConversationType_PRIVATE;//设置会话的目标会话ID。(单聊、客服、公众服务会话为对方的ID,讨论组、群聊、聊天室为会话的ID)self.targetId = OTHERID;//设置聊天会话界面要显示的标题self.title = OTHERID;return self;
}-(void)viewDidLoad{[super viewDidLoad];//用户信息提供者[RCIM sharedRCIM].userInfoDataSource = self;}#pragma mark - <RCIMUserInfoDataSource>
/*!获取用户信息@param userId      用户ID@param completion  获取用户信息完成之后需要执行的Block [userInfo:该用户ID对应的用户信息]@discussion SDK通过此方法获取用户信息并显示,请在completion中返回该用户ID对应的用户信息。在您设置了用户信息提供者之后,SDK在需要显示用户信息的时候,会调用此方法,向您请求用户信息用于显示。*/
-(void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion
{//设置用户信息NSString *avatarURL = @"http://xxxxxx.com/static/avatar/137180371639017.jpeg";RCUserInfo *userInfo = [[RCUserInfo alloc] initWithUserId:userId name:userId portrait:avatarURL];//block回调设置用户信息
    completion(userInfo);
}@end

//聊天界面
-(void)conversationStart{//新建一个聊天会话View Controller对象、显示聊天会话界面SystemConversationViewController *chat = [[SystemConversationViewController alloc]init];[self.navigationController pushViewController:chat animated:YES];
}

(4)显示会话列表界面代码如下(此处我继承了原生会话列表类RCConversationListViewController)

//  ConversationListViewController.h
//  RongCloudKit
//
//  Created by 夏远全 on 16/12/17.
//  Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved.
//

#import <RongIMKit/RongIMKit.h>@interface SystemConversationListViewController : RCConversationListViewController@end

//  ConversationListViewController.m
//  RongCloudKit
//
//  Created by 夏远全 on 16/12/17.
//  Copyright © 2016年 广州市东德网络科技有限公司. All rights reserved.
//

#import "SystemConversationListViewController.h"
#import "SystemConversationViewController.h"@interface SystemConversationListViewController ()<RCIMUserInfoDataSource>@end@implementation SystemConversationListViewController- (void)viewDidLoad {//重写显示相关的接口,必须先调用super,否则会屏蔽SDK默认的处理
    [super viewDidLoad];self.conversationListTableView.tableFooterView = [[UIView alloc] init];//设置需要显示哪些类型的会话
    [self setDisplayConversationTypes:@[@(ConversationType_PRIVATE),@(ConversationType_DISCUSSION),@(ConversationType_CHATROOM),@(ConversationType_GROUP),@(ConversationType_APPSERVICE),@(ConversationType_SYSTEM)]];//设置需要将哪些类型的会话在会话列表中聚合显示
    [self setCollectionConversationType:@[@(ConversationType_DISCUSSION),@(ConversationType_GROUP)]];//用户信息提供者[RCIM sharedRCIM].userInfoDataSource = self;
}//重写RCConversationListViewController的onSelectedTableRow事件
- (void)onSelectedTableRow:(RCConversationModelType)conversationModelTypeconversationModel:(RCConversationModel *)modelatIndexPath:(NSIndexPath *)indexPath {SystemConversationViewController *conversationVC = [[SystemConversationViewController alloc]init];conversationVC.conversationType = model.conversationType;conversationVC.targetId = model.targetId;conversationVC.title = model.targetId;[self.navigationController pushViewController:conversationVC animated:YES];
}#pragma mark - <RCIMUserInfoDataSource>
/*!获取用户信息@param userId      用户ID@param completion  获取用户信息完成之后需要执行的Block [userInfo:该用户ID对应的用户信息]@discussion SDK通过此方法获取用户信息并显示,请在completion中返回该用户ID对应的用户信息。在您设置了用户信息提供者之后,SDK在需要显示用户信息的时候,会调用此方法,向您请求用户信息用于显示。*/
-(void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion
{//设置用户信息NSString *avatarURL = @"http://xxxxxx.com/static/avatar/137180371639017.jpeg";RCUserInfo *userInfo = [[RCUserInfo alloc] initWithUserId:userId name:userId portrait:avatarURL];//block回调设置用户信息
    completion(userInfo);
}@end

//会话列表
-(void)chatViewList{//新建一个会话列表界面类,显示所有的会话联系人SystemConversationListViewController *chatList = [[SystemConversationListViewController alloc] init];[self.navigationController pushViewController:chatList animated:YES];
}

五、演示截图

     

     

六、提示一下

 融云的开发文档些的相当详细,我这儿写一下纯属闲来无事,自娱自乐,有这方面需要的还是去看官方的文档吧,那文档的详细,厉害了我的哥~~~

欢迎关注我的博客:http://www.cnblogs.com/XYQ-208910和github:https://github.com/xiayuanquan

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/6195117.html,如需转载请自行联系原作者

iOS:融云即时通讯快速集成相关推荐

  1. 融云即时通讯SDK集成 – 定制UI(二) ——添加自定义表情库

    融云即时通讯SDK集成 – 定制UI(二) --添加自定义表情库 背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的 ...

  2. 融云即时通讯SDK集成 -- 定制UI(二) ——添加自定义表情库

    背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的SDK厂商选来选去的, 各有各的好也各有各的不足.最后点兵点将,选 ...

  3. iOS - 融云即时通讯的简单使用

    项目里开始需要聊天功能,以前没有接触过,最近看着官方集成文档不是很操心. 集成官方文档地址 集成步骤就不说了 文档说的很清楚啦~ 1⃣️ 集成完毕,我们开始要写代码来做初始化和连接部分啦! 在appd ...

  4. iOS开发融云即时通讯集成详细步骤

    1.融云即时通讯iOS SDK下载地址   http://rongcloud.cn/downloads  选择iOS   SDK下载 2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注 ...

  5. 融云即时通讯云平台获北京六局委新技术新产品认证

    近日,融云即时通讯云平台成功入选第七批北京市新技术新产品(服务)认证,成为本批次中即时通讯行业唯一入选企业.该证书是由北京市科学技术委员会.北京市发展改革委员会.北京市经济和信息化委员会.北京市住房和 ...

  6. iOS集成融云即时通讯详细教程

    相关集成方法也可以直接参考官方文档http://www.rongcloud.cn/docs/ios.html.下面是我集成过程中的一些详细步骤. 1.准备工作:到官网http://www.rongcl ...

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

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

  8. 融云即时通讯云5大高级功能解决App运营诸多痛点

    在移动互联网时代,涉及各类民生的App应用已经彻底改变了人们的生活方式.据工信部日前发布的<2017年上半年我国互联网业务运行情况报告>显示,我国移动应用程序,即App的数量已超402万款 ...

  9. 融云聊天 php_thinkphp整合系列之融云即时通讯在线聊天

    随着技术的发展:现代的网站:越来越趋于应用形式了: 不再是像以前那样需要用户刷新页面:获取数据了: 服务器端可以主动向用户推送数据:更加及时性了: 比较突出的就是即时通讯在线聊天: 今个:我们要打造的 ...

最新文章

  1. Could not find artifact com.sun:tools:jar:1.5.0 解决办法
  2. 内向女生适合学计算机吗,适合内向女生学的专业有哪些
  3. 硬盘温度70度正常吗_打破传统固态硬盘的速度壁垒!XPG S50 PCIE 4.0评测
  4. html 属于mvvm框架,mvvm模式和mvc的区别是什么?
  5. python2.x和3.x的区别 print_Python2.x和Python3.x的区别
  6. postman 请求参数为数组及JsonObject
  7. Ubuntu Linux环境下的Android开发环境的配置
  8. mysql-5.6.14.tar.gz_CentOS 6.4下编译安装MySQL 5.6.14
  9. 大疆aeb连拍_大疆 AIR2 玩机(一)包围曝光及后期处理
  10. 论文的事情终于可以告一段落了
  11. Android ADB命令?这一次我再也不死记了!【简单说】
  12. 数据库系统的三大范式以及BCNF范式详细讲解 (很详细,很详细,很详细)
  13. 2021鹏业安装算量软件常见问题整理(二)
  14. IOS捷径早安,创建自动化可实现自动化叫醒
  15. python 微商城_微商城是自己开发好还是用第三方平台好?
  16. 使用VSCode打开html文件是空白,在文件夹大小也是0KB解决方法
  17. 优雅编程之阿里巴巴开发规范分享及扩展学习(三十八)
  18. Simulink 界面模型的矢量图复制
  19. 51单片机利用STC-ISP下载软件时串口打开失败怎么办?
  20. 欧美义务教育改革新视野:重估“家庭学校”的价值

热门文章

  1. 电脑硬件学习(主板,CPU,内存,硬盘,显卡)
  2. CentOS下的Memcache安装
  3. oracle rac安装
  4. 新闻媒体的“社会热点事件”催发微博客的诞生
  5. SpringCloud微服务注册中心如何承载大型系统的千万级访问?源码及原理分析
  6. 计算机图形软件---图形功能
  7. Windows系统运维转linux系统运维的经历
  8. 当一个解决方案下面有多个项目时,如果设置启动项?
  9. DHCP服务器的搭建与维护
  10. Embedded Linux Primer----嵌入式Linux基础教程--导论