IOS集成融云SDK即时通讯

相信大家在项目中会用到即时通讯功能,自己去写的话会需要前后台合作,会大大加大开发的周期,所以考虑使用第三方的即时通讯平台,比如现在有融云,环信....等等等!楼主在项目开发过程中使用到过环信和融云,今天就为大家写下IOS端集成环信的方法和可能会遇到的问题。(融云提供聊天会话列表和聊天界面并且允许我们自定义,所以很方便的)。

一:准备工作
       1.首先打开融云官网http://www.rongcloud.cn/,注册自己的账户,并登陆。
       2.点击左边创建应用,在打开的小窗口填写你的项目的一些信息(如果正在开发阶段可以选择未运营商务用户,如果项目上线后是需要提交申请审核,后面再讲)。

3.如果对界面没有更高的定制要求,融云本身提供的所有聊天等界面已经足够使用,此时集成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 : [email protected]

//  RongCloudConversationViewController.m//  RongCloudKit////  Created by 夏远全 on 16/12/17.//  Copyright  2016年 广州市东德网络科技有限公司. All rights reserved.//#import "SystemConversationViewController.h"@interface SystemConversationViewController ()<RCIMUserInfoDataSource>@[email protected] 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 : [email protected]

//  ConversationListViewController.m//  RongCloudKit////  Created by 夏远全 on 16/12/17.//  Copyright  2016年 广州市东德网络科技有限公司. All rights reserved.//#import "SystemConversationListViewController.h"#import "SystemConversationViewController.h"@interface SystemConversationListViewController ()<RCIMUserInfoDataSource>@[email protected] 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];
}

五,演示截图

六、提示一下

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

http://www.rongcloud.cn/docs/

时间: 2024-10-16 00:41:06

IOS集成融云SDK即时通讯的相关文章

apicloud+融云实现即时通讯

请尊重作者的辛勤劳动!!! 使用apicloud开发已经快2个月了,起初的目的就是为了实现安卓和苹果的兼容,属于一个试验项目,究竟apicloud是否能够满足公司的要求?最 终看来还是不错的,使用apicloud+融云实现了类似微信即时通讯的功能.看到有很多后来的人依然在这块挣扎,我就把自己的实现思路和成果分享出来和 大家一起交流一下,我也是第一次做手机开发,有很多经验不足的地方,希望大家能够直接指出来,我也不断完善自己的产品.     这次没有使用本地数据库,所有数据都是从融云和服务器获取,会

gradle方式集成融云sdk dlopen failed: library &quot;libsqlite.so&quot; not found

1.gradle implementation 'cn.rongcloud.android:IMLib:2.8.6' implementation 'cn.rongcloud.android:IMKit:2.8.6' implementation 'cn.rongcloud.android:CallLib:2.8.6' implementation 'cn.rongcloud.android:CallKit:2.8.6' 还需要,开启 multiDexEnabled true api 'com.

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

1.融云即时通讯iOS SDK下载地址   http://rongcloud.cn/downloads  选择iOS   SDK下载 2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注册了融云开发者帐号,请前往 融云开发者平台 创建应用:如果您还没有注册融云开发者帐号,请前往 融云官方网站 首先注册开发者帐号,注册后创建应用.注册地址  https://developer.rongcloud.cn/signup 3.登陆融云开发者平台 https://developer.rong

融云SDK:获取用户Token的方法

融云SDK查看ServerAPI里面有个获取Token的方法,本以为只要传三个参数就可以.后来发现,在请求头有几个必须要传的参数,否则服务器返回401(未授权).拿获取Token接口为例子 如图所示,请求头中包含 : App-Key(应用appkey), Nonce(随机数,不限长度),Timestamp(时间戳from1970),Signature(签名).签名生成的方法 就是 sha1(appsecret+Nonce+Timestamp) 只有这几个请求头的值都正确了,接口才能正确返回Tok

ios开发之 -- 5分钟集成融云的客服功能

最近项目中遇到了客服的功能,首先想到的就是使用融云的功能,因为以前做的即时通讯的项目,用的都是融云的sdk,花了点时间研究了下,希望能帮到大家! 废话不多说,步骤如下: 一.申请融云账号 二.创建应用 三.开通客服服务,融云的客服集成的是智齿客服服务系统,完全能够满足使用! 四.开通客服服务后,会生成客服id,target id就是这个,进入聊天页面之前用的 五.进入应用管理界面,点击API调试,id和username,还有头像url可以随便输,测试用的,下面会有打印,生成一个token 六.准

使用融云SDK遇到的一些问题

官方文档 如果使用IMKit,对话布局可以不用自己做 先导入IMKit  module,配置好之后,在module的清单文件中,搜索host,我找到2个,把*替换成 自己项目的包名,另外搜索 RONG_CLOUD_APP_KEY,把值换成控制台的给的key 在会话界面 要创建一个ConversationActivity  它的布局conversation里面的fragment 是固定的 直接复制可以,可以自己弄个actionbar或者toolbar 显示标题 然后在清单文件中  配置Conver

Vue+原生App混合开发手记#2 融云即时通讯

最近开发的一个医药项目中要求加入即时通讯,最后选择了融云IM即时通讯服务,融云即时通讯包含Android SDK,iOS SDK以及Web SDK,为了节省开发时间,使用了Web SDK,这样在Android平台和iOS平台上都能表现一致.这是部分界面的效果, 分为两类用户,一类是医生,接受患者的咨询,一类是患者,可以与医生交流: 医生用户看到的界面 患者用户看到的界面 聊天界面       获取App Key 首先进入融云官网,找到Web SDK开发指南,按照提示先注册一个账号,拿到AppKe

融云亮相GDG谷歌女性开发者大会 揭秘IMSDK网络优化策略

4 月 20 日,冷雨阻碍不了天津GDG谷歌女性开发者大会的热烈召开,一众开发者.架构师和科技公司创业者云集一堂,就女性开发者的技术.职场.人生多方面话题展开深入探讨.活动由GDG (谷歌开发者社区) 的 Women Tech Leader(WTM)发起并组织,旨在鼓励和促进女性在技术领域的参与.融云作为云通信技术领导者,在大会上就“即时通讯 SDK 的网络优化策略”主题开展演讲,与各界分享多年积累的云通信技术应用经验,同时表达了对全球女性开发者重要地位的支持和鼓励. 作为通信云行业领导企业,融

融云的Java端实现

产品中要使用融云实现即时通讯,下面是实现步骤: 1 .注册appkey secret,这个是第一步: 2 .下载融云Java客户端 https://github.com/rongcloud/server-sdk-java: 3 .集成到自己项目里. 这个是下载下的,目录很简单 我们把两个包考到自己项目了 ,两个jar放到我们自己的项目lib 里,就可以了. 4.由于我们的业务暂时只需要单聊一对一业务,大概客户端只要实现这几个功能: 1.获取token 2 发消息,我看到融云提供了实时路由,和消息