iOS:融云即时通讯快速集成
一、介绍
即时通讯在众多社交软件、生活软件以及教育软件中已经是必备的功能了,在当前国内,即时通讯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
iOS:融云即时通讯快速集成相关推荐
- 融云即时通讯SDK集成 – 定制UI(二) ——添加自定义表情库
融云即时通讯SDK集成 – 定制UI(二) --添加自定义表情库 背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的 ...
- 融云即时通讯SDK集成 -- 定制UI(二) ——添加自定义表情库
背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的SDK厂商选来选去的, 各有各的好也各有各的不足.最后点兵点将,选 ...
- iOS - 融云即时通讯的简单使用
项目里开始需要聊天功能,以前没有接触过,最近看着官方集成文档不是很操心. 集成官方文档地址 集成步骤就不说了 文档说的很清楚啦~ 1⃣️ 集成完毕,我们开始要写代码来做初始化和连接部分啦! 在appd ...
- iOS开发融云即时通讯集成详细步骤
1.融云即时通讯iOS SDK下载地址 http://rongcloud.cn/downloads 选择iOS SDK下载 2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注 ...
- 融云即时通讯云平台获北京六局委新技术新产品认证
近日,融云即时通讯云平台成功入选第七批北京市新技术新产品(服务)认证,成为本批次中即时通讯行业唯一入选企业.该证书是由北京市科学技术委员会.北京市发展改革委员会.北京市经济和信息化委员会.北京市住房和 ...
- iOS集成融云即时通讯详细教程
相关集成方法也可以直接参考官方文档http://www.rongcloud.cn/docs/ios.html.下面是我集成过程中的一些详细步骤. 1.准备工作:到官网http://www.rongcl ...
- 项目中集成融云即时通讯
http://blog.csdn.net/qq_28759359/article/details/52689948 项目中集成融云IM,能够单聊,离线能够收到消息,有聊天列表. 一我使用的是融云. I ...
- 融云即时通讯云5大高级功能解决App运营诸多痛点
在移动互联网时代,涉及各类民生的App应用已经彻底改变了人们的生活方式.据工信部日前发布的<2017年上半年我国互联网业务运行情况报告>显示,我国移动应用程序,即App的数量已超402万款 ...
- 融云聊天 php_thinkphp整合系列之融云即时通讯在线聊天
随着技术的发展:现代的网站:越来越趋于应用形式了: 不再是像以前那样需要用户刷新页面:获取数据了: 服务器端可以主动向用户推送数据:更加及时性了: 比较突出的就是即时通讯在线聊天: 今个:我们要打造的 ...
最新文章
- Could not find artifact com.sun:tools:jar:1.5.0 解决办法
- 内向女生适合学计算机吗,适合内向女生学的专业有哪些
- 硬盘温度70度正常吗_打破传统固态硬盘的速度壁垒!XPG S50 PCIE 4.0评测
- html 属于mvvm框架,mvvm模式和mvc的区别是什么?
- python2.x和3.x的区别 print_Python2.x和Python3.x的区别
- postman 请求参数为数组及JsonObject
- Ubuntu Linux环境下的Android开发环境的配置
- mysql-5.6.14.tar.gz_CentOS 6.4下编译安装MySQL 5.6.14
- 大疆aeb连拍_大疆 AIR2 玩机(一)包围曝光及后期处理
- 论文的事情终于可以告一段落了
- Android ADB命令?这一次我再也不死记了!【简单说】
- 数据库系统的三大范式以及BCNF范式详细讲解 (很详细,很详细,很详细)
- 2021鹏业安装算量软件常见问题整理(二)
- IOS捷径早安,创建自动化可实现自动化叫醒
- python 微商城_微商城是自己开发好还是用第三方平台好?
- 使用VSCode打开html文件是空白,在文件夹大小也是0KB解决方法
- 优雅编程之阿里巴巴开发规范分享及扩展学习(三十八)
- Simulink 界面模型的矢量图复制
- 51单片机利用STC-ISP下载软件时串口打开失败怎么办?
- 欧美义务教育改革新视野:重估“家庭学校”的价值