一、介绍

即时通讯在众多社交软件、生活软件以及教育软件中已经是必备的功能了,在当前国内,即时通讯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' do
pod '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)conversationModelType
conversationModel:(RCConversationModel *)model
atIndexPath:(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];
}

五、演示截图

     

     

六、提示一下

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

iOS:融云即时通讯快速集成的更多相关文章

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

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

  2. ThinkPHP 提供Auth 权限管理、支付宝、微信支付、阿里oss、友盟推送、融云即时通讯、云通讯短信、Email、Excel、PDF 等等

    多功能 THinkPHP 开源框架 项目简介:使用 THinkPHP 开发项目的过程中把一些常用的功能或者第三方 sdk 整合好,开源供亲们参考,如 Auth 权限管理.支付宝.微信支付.阿里oss. ...

  3. iOS消息体系架构详解-融云即时通讯云

    iOS SDK 体系架构 本文档将详细介绍融云的 SDK 产品架构和消息体系,以便于您更深入的了解融云并更快速的开发自己的产品. 融云 SDK 系统架构 IMKit IMKit 的功能主要是封装各种界 ...

  4. 对接融云即时通讯组件SDK,轻松实现App聊天室

    我好像特别喜欢做聊天室类的东东,刚折腾完微软的SignalR又折腾App.本来想研究研究XMPP的,由于服务器的搭建问题,先采用一个第三方的吧,看看效果如何.听到弟弟说他们公司用到了融云,我也下载个S ...

  5. iOS开发之即时通讯之Socket(AsyncSocket)

    1.AsyncSocket介绍 如果需要在项目中像QQ微信一样做到即时通讯,必须使用socket通讯. iOS中Socket编程的方式: BSD Socket: BSD Socket 是UNIX系统中 ...

  6. android7.0以上使用融云即使通讯的坑

    一.连接服务器不走connect()方法 在android6.0以下,在使用融云sdk时,直接将依赖库引入到项目中即可.但是在7.0及以上时,直接应用会发现消息一直发送不出去,错误提示为dlopen ...

  7. IM 融云 之 通讯能力库API

    参考:http://www.rongcloud.cn/docs/api/ios/imlib/Classes/RCConversation.html 0. 使用说明 使用该文档注意,每个蓝色标题点击后, ...

  8. IOS XMPP(即时通讯的框架)

    #import "AppDelegate.h" #import "XMPPFramework.h" /* * 在AppDelegate实现登录 1. 初始化XM ...

  9. iOS中 XMPP即时通讯实现的主要步骤

    这里只是列出实现的只要步骤,不是全部代码. 首先导入XMPPFramework,及相关配置,完成后开始. 创建一个XMPPHelper  类来管理要进行的操作. XMPPHelper.h文件如下 ty ...

随机推荐

  1. [R语言]foreach和doParallel包实现多个数据库同时查询

    R语言在进行数据库查询时,每执行一条语句,都会阻塞.直到查询语句返回结果之后,才会进行下一条语句. 为了能够实现同时对多个数据库进行查询,以节省顺序执行下来的时间,首先考虑通过多线程来进行数据库查询. ...

  2. NODEJS-fs模块操作文件系统

    1. 使用 fs模块 对文件/目录进行操作 2. 使用 path模块 对路径进行操作 使用 fs模块 对文件/目录进行操作 读取文件内容 // fs.readFile(filename, [optio ...

  3. jsp页面中创建方法

    在JSP页面中是用 <%! void function(){ } %> 这种方式可以定义函数. 如果只使用 <% //todo %> 代码块中的代码在编译时将会都被加到 sev ...

  4. /var/log目录下的20个Linux日志文件功能详解

    如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容.在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决. 以下介绍的 ...

  5. BZOJ4521: [Cqoi2016]手机号码

    Description 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不 吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号 码单 ...

  6. LightOJ 1245 数学题,找规律

    1.LightOJ 1245   Harmonic Number (II)   数学题 2.总结:看了题解,很严谨,但又确实恶心的题 题意:求n/1+n/2+....+n/n,n<=2^31. ...

  7. 百度SDK的使用第一天

    //获取自定义的经纬度上添加位置气泡,大头钉 BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init]; CLLocation ...

  8. HttpClient_httpclient 4.3.1 post get的工具类

    package com.ryx.util; import java.util.ArrayList; import java.util.List; import java.util.Map; impor ...

  9. 1047. Student List for Course (25)

    Zhejiang University has 40000 students and provides 2500 courses. Now given the registered course li ...

  10. Java中的super与this解析

    好了,现在开始讨论this&super这两个关键字的意义和用法. 在Java中,this通常指当前对象,super则指父类的.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象 ...