1.融云即时通讯iOS SDK下载地址   http://rongcloud.cn/downloads  选择iOS   SDK下载

2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注册了融云开发者帐号,请前往 融云开发者平台 创建应用;如果您还没有注册融云开发者帐号,请前往 融云官方网站 首先注册开发者帐号,注册后创建应用。注册地址  https://developer.rongcloud.cn/signup

3.登陆融云开发者平台 https://developer.rongcloud.cn/signin 创建应用

4.进入后台之后点击创建应用,进入这样一个创建界面

图1

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

图2

6.点击AppKey进入

图3

7.手动安装融云即时通讯SDK

7.1将下载好的最新的融云SDK导入到自己的项目中

7.2添加依赖库 在Build Phases中第三个选项link中点击左下角+号添加依赖库

所需的依赖库

图4

8.获取Token

和第五步一样,进入融云后台点击我的应用—>自己的应用名称—>IM服务—>API调试

右边会进入一个界面,在这里获取调试Token

图5

填的时候可以按照这个参数填,就是个案例

用户 Id:

userId = "1" // 用户在融云系统中唯一的身份 Id,可为任意数字或字符串,但必须保证全局唯一。

用户名称:

name = "韩梅梅" // 用户的显示名称,用来在 Push 推送时,或者客户端没有提供用户信息时,显示用户的名称。

用户头像图片:

portraitUri = "http://rongcloud-web.qiniudn.com/docs_demo_rongcloud_logo.png"

现在我们获得了AppKey和Token了

9.下面就开始快速集成了

9.1

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

#import <RongIMLib/RongIMLib.h>

#import <RongIMKit/RongIMKit.h>

然后遵守RCIMConnectionStatusDelegate这个代理方法

即变成这样@interface AppDelegate : UIResponder <UIApplicationDelegate,RCIMConnectionStatusDelegate>

9.2在AppDelegate.m文件中导入头文件

//融云即时通讯

#import <RongIMKit/RongIMKit.h>

#import <RongIMLib/RongIMLib.h>

#import <UIKit/UIKit.h>

然后将获得的融云的AppKey 写成一个宏  如下  将自己的AppKey 替换即可\

k51hidwq1bbcdds4b将这个换成自己的即可

//融云即时通讯AppKey

#define RONGCLOUD_IM_APPKEY @"k51hidwq1bbcdds4b"

10.在AppDelegate.m的文件中的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

}

方法中加入以下代码

//融云即时通讯

//初始化融云SDK。

[[RCIM sharedRCIM] initWithAppKey:RONGCLOUD_IM_APPKEY];

/**

* 推送处理1

*/

if ([application

respondsToSelector:@selector(registerUserNotificationSettings:)]) {

//注册推送, iOS 8

UIUserNotificationSettings *settings = [UIUserNotificationSettings

settingsForTypes:(UIUserNotificationTypeBadge |

UIUserNotificationTypeSound |

UIUserNotificationTypeAlert)

categories:nil];

[application registerUserNotificationSettings:settings];

} else {

UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge |

UIRemoteNotificationTypeAlert |

UIRemoteNotificationTypeSound;

[application registerForRemoteNotificationTypes:myTypes];

}

//融云即时通讯

[[NSNotificationCenter defaultCenter]

addObserver:self

selector:@selector(didReceiveMessageNotification:)

name:RCKitDispatchMessageNotification

object:nil];

[[RCIM sharedRCIM] setConnectionStatusDelegate:self];

加入到方法中的代码到这里

下面是单独的方法  直接加在AppDelegate.m的文件中即可

/**

*  将得到的devicetoken 传给融云用于离线状态接收push ,您的app后台要上传推送证书

*

*  @param application <#application description#>

*  @param deviceToken <#deviceToken description#>

*/

- (void)application:(UIApplication *)application

didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

NSString *token =

[[[[deviceToken description] stringByReplacingOccurrencesOfString:@"<"

withString:@""]

stringByReplacingOccurrencesOfString:@">"

withString:@""]

stringByReplacingOccurrencesOfString:@" "

withString:@""];

[[RCIMClient sharedRCIMClient] setDeviceToken:token];

}

/**

*  网络状态变化。

*

*  @param status 网络状态。

*/

- (void)onRCIMConnectionStatusChanged:(RCConnectionStatus)status {

if (status == ConnectionStatus_KICKED_OFFLINE_BY_OTHER_CLIENT) {

UIAlertView *alert = [[UIAlertView alloc]

initWithTitle:@"提示"

message:@"您"

@"的帐号在别的设备上登录,您被迫下线!"

delegate:nil

cancelButtonTitle:@"知道了"

otherButtonTitles:nil, nil];

[alert show];

//注意这里下面的4行,根据自己需要修改  也可以注释了,但是只能注释这4行,网络状态变化这个方法一定要实现

ViewController *loginVC = [[ViewController alloc] init];

UINavigationController *_navi =

[[UINavigationController alloc] initWithRootViewController:loginVC];

self.window.rootViewController = _navi;

}

}

- (void)didReceiveMessageNotification:(NSNotification *)notification {

[UIApplication sharedApplication].applicationIconBadgeNumber =

[UIApplication sharedApplication].applicationIconBadgeNumber + 1;

}

11.开始创建会话

先创建一个继承RCConversationListViewController名为ChatListViewController的控制器

创建之后的控制器.h文件即为

#import <UIKit/UIKit.h>

#import <RongIMKit/RongIMKit.h>

@interface ChatListViewController : RCConversationListViewController

@end

这样的样式

在你要创建即时会话的界面的控制器的.h文件中导入头文件

//融云即时通讯

#import <RongIMKit/RongIMKit.h>

并遵守数据源方法RCIMUserInfoDataSource

即变成了

#import <RongIMKit/RongIMKit.h>

@interface ViewController : UIViewController<RCIMUserInfoDataSource>

在.m文件中导入头文件

//融云即时通讯

#import "ChatListViewController.h"

#import <RongIMKit/RCConversationViewController.h>

将我们获取的Token定义成宏 就像这样的格式  换成自己的Token即可

//融云即时通讯Token

#define RONGCLOUD_IM_Token @"LU0IpXzEeYXUxuJi5n9hAwNcet2QRQu/IRxLhvshFhvLm8f3gdUu+y4TIhufZfJ/fIXRJrQyBu8cJAN2bcAolA=="

比如在我所在的控制器我有一个开始回答按钮

我想在这个控制器点击开始回答按钮就想让他创建即时会话

这样来实现,点击开始回答按钮

/**

*  点击开始回答执行的方法

*/

-(void)startAnswer

{

//登陆融云

//登录融云服务器,开始阶段可以先从融云API调试网站获取,之后token需要通过服务器到融云服务器取。

NSString *token=RONGCLOUD_IM_Token;

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

//设置用户信息提供者,页面展现的用户头像及昵称都会从此代理取 这里会跳到会话列表界面  就是我们平常QQ聊天都有一个

会话的列表  如果想直接跳到聊天界面 下面再说

[[RCIM sharedRCIM] setUserInfoDataSource:self];

NSLog(@"Login successfully with userId: %@.", userId);

dispatch_async(dispatch_get_main_queue(), ^{

ChatListViewController *chatListViewController = [[ChatListViewController alloc]init];

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

});

} error:^(RCConnectErrorCode status) {

NSLog(@"login error status: %ld.", (long)status);

} tokenIncorrect:^{

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

}];

} error:^(RCConnectErrorCode status) {

NSLog(@"login error status: %ld.", (long)status);

} tokenIncorrect:^{

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

}];

YYCLog(@"点击了开始回答");

}

然后在这个控制器再实现一个方法  就是下面这个方法

/**

*此方法中要提供给融云用户的信息,建议缓存到本地,然后改方法每次从您的缓存返回

*/

- (void)getUserInfoWithUserId:(NSString *)userId completion:(void(^)(RCUserInfo* userInfo))completion

{

//此处为了演示写了一个用户信息

if ([@"1" isEqual:userId]) {

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

user.userId = @"1";

user.name = @"测试1";

user.portraitUri = @"https://ss0.baidu.com/73t1bjeh1BF3odCf/it/u=1756054607,4047938258&fm=96&s=94D712D20AA1875519EB37BE0300C008";

return completion(user);

}else if([@"2" isEqual:userId]) {

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

user.userId = @"2";

user.name = @"测试2";

user.portraitUri = @"https://ss0.baidu.com/73t1bjeh1BF3odCf/it/u=1756054607,4047938258&fm=96&s=94D712D20AA1875519EB37BE0300C008";

return completion(user);

}

}

这个方法也要在这个.m文件中实现

这里都是测试 先这样写  我到后面再写怎么具体实现

下面代码都一样

下面就是在我们的ChatListViewController.h文件中

#import <RongIMKit/RongIMKit.h>

#import <RongIMKit/RongIMKit.h>

@interface ChatListViewController : RCConversationListViewController

@end

在.m文件中  这是会话列表界面  点击右上角的单聊即可以开始聊天 就像我们的微信聊天一样的界面

想要和不同的人聊天 只要将conversationVC.targetId = @"user”;后面的user改一下就行了 现在时界面搭建 这样

界面就搭建好了

//  会话聊天界面

#import "ChatListViewController.h"

@interface ChatListViewController ()

@end

@implementation ChatListViewController

- (void)viewDidLoad {

[super viewDidLoad];

[self setDisplayConversationTypes:@[@(ConversationType_PRIVATE),@(ConversationType_DISCUSSION)]];

//自定义导航左右按钮

UIBarButtonItem *rightButton = [[UIBarButtonItem alloc]initWithTitle:@"单聊" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarButtonItemPressed:)];

[rightButton setTintColor:[UIColor whiteColor]];

UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];

backBtn.frame = CGRectMake(0, 6, 67, 23);

UIImageView *backImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"navigator_btn_back"]];

backImg.frame = CGRectMake(-10, 0, 22, 22);

[backBtn addSubview:backImg];

UILabel *backText = [[UILabel alloc] initWithFrame:CGRectMake(12, 0, 65, 22)];

backText.text = @"退出";

backText.font = [UIFont systemFontOfSize:15];

[backText setBackgroundColor:[UIColor clearColor]];

[backText setTextColor:[UIColor whiteColor]];

[backBtn addSubview:backText];

[backBtn addTarget:self action:@selector(leftBarButtonItemPressed:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn];

[self.navigationItem setLeftBarButtonItem:leftButton];

self.navigationItem.rightBarButtonItem = rightButton;

self.conversationListTableView.tableFooterView = [UIView new];

}

/**

*重写RCConversationListViewController的onSelectedTableRow事件

*

*  @param conversationModelType 数据模型类型

*  @param model                 数据模型

*  @param indexPath             索引

*/

-(void)onSelectedTableRow:(RCConversationModelType)conversationModelType conversationModel:(RCConversationModel *)model atIndexPath:(NSIndexPath *)indexPath

{

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

conversationVC.conversationType =model.conversationType;

conversationVC.targetId = model.targetId;

conversationVC.userName =model.conversationTitle;

conversationVC.title = model.conversationTitle;

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

}

-(void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:animated];

self.tabBarController.navigationItem.title = @"会话";

}

/**

*  退出登录

*

*  @param sender <#sender description#>

*/

- (void)leftBarButtonItemPressed:(id)sender {

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"确定要退出?" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"退出", nil];

[alertView show];

}

/**

*  重载右边导航按钮的事件  zheli

*

*  @param sender <#sender description#>

*/

-(void)rightBarButtonItemPressed:(id)sender

{

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

conversationVC.conversationType =ConversationType_PRIVATE;

conversationVC.targetId = @"user"; //这里模拟自己给自己发消息,您可以替换成其他登录的用户的UserId

conversationVC.userName = @"测试1";

conversationVC.title = @"自问自答";

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

}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {

if (buttonIndex == 1) {

[[RCIM sharedRCIM]disconnect];

[self.navigationController popViewControllerAnimated:YES];

}

}

@end

这样融云即时聊天界面就搭建好了,就只是个测试界面 后面我会更新完整的融云即时聊天

这样集成的呢,是有会话列表的,如果不想点击开始回答进入会话列表界面,而是直接进入聊天界面

直接将

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

conversationVC.conversationType =ConversationType_PRIVATE;

conversationVC.targetId = @"user"; //这里模拟自己给自己发消息,您可以替换成其他登录的用户的UserId

conversationVC.userName = @"测试1";

conversationVC.title = @"自问自答";

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

这段代码复制粘贴到

/**

*  点击开始回答执行的方法

*/

-(void)startAnswer

{

}

这个方法里,但是就是必须先登陆融云服务器 然后将

[[RCIM sharedRCIM] setUserInfoDataSource:self];

NSLog(@"Login successfully with userId: %@.", userId);

dispatch_async(dispatch_get_main_queue(), ^{

ChatListViewController *chatListViewController = [[ChatListViewController alloc]init];

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

});

这段代码删了

就变成了

/**

*  点击开始回答执行的方法

*/

-(void)startAnswer

{

//登陆融云

//登录融云服务器,开始阶段可以先从融云API调试网站获取,之后token需要通过服务器到融云服务器取。

NSString *token=RONGCLOUD_IM_Token;

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

} error:^(RCConnectErrorCode status) {

NSLog(@"login error status: %ld.", (long)status);

} tokenIncorrect:^{

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

}];

//直接跳到聊天界面

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

conversationVC.conversationType =ConversationType_PRIVATE;

conversationVC.targetId = @"user"; //这里模拟自己给自己发消息,您可以替换成其他登录的用户的UserId

conversationVC.userName = @"测试1";

conversationVC.title = @"自问自答";

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

//

//

//

YYCLog(@"点击了开始回答");

}

这样点击开始回答按钮就直接进入了聊天界面  就像我们的微信聊天界面一样的

这样就集成好了

更多进阶请参考一下官方文档

官方网站集成文档地址:http://www.rongcloud.cn/docs/ios.html

iOS开发融云即时通讯集成详细步骤相关推荐

  1. iOS:融云即时通讯快速集成

    一.介绍 即时通讯在众多社交软件.生活软件以及教育软件中已经是必备的功能了,在当前国内,即时通讯SDK做的比较不错的有那么几家,例如环信SDK.融云SDK...,这两家做的都很不错,各有千秋吧,要是真 ...

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

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

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

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

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

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

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

    转载自:https://blog.csdn.net/qqing__/article/details/78350830 相关集成方法也可以直接参考官方文档http://www.rongcloud.cn/ ...

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

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

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

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

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

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

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

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

最新文章

  1. [React Router v4] Conditionally Render a Route with the Switch Component
  2. [蓝桥杯]算法提高 金属采集(树形dp)
  3. 港中文开源 | 融合视频目标检测与单目标、多目标跟踪
  4. python生成api文档_sphinx生成python文档
  5. 第一个SpringBoot项目——CRUD
  6. webapi实现AJAX多文件上传,AJAX调用webapi上传图片或文件
  7. 高通msm8953 Android7.1支持Audio设备列表(十二)
  8. 【python】15行代码下载快手无水印短视频
  9. 爬虫抓取暗黑3国服天梯榜数据及分析
  10. UG二次开发 获得文档存盘历史
  11. 第一个用计算机编舞的人,多媒体平台·虚拟人·数字舞蹈
  12. 目标检测YOLO实战应用案例100讲-基于多尺度特征融合的水下小目标检测方法研究
  13. C-V2X技术发展、应用及展望
  14. QtQuick串口编程Demo
  15. 什么是数字孪生?【深度解析】
  16. [转载]Palm 串行通讯GPS数据读取的实现
  17. 记北京出差,这一路走来~
  18. 索尼xz Android 内存,索尼XZ2 Compect 简单上手体验,不算好看但...还行?
  19. python tokenize_model_python-AttributeError:“令牌生成器”对象在Keras中没有属性“ oov_token”...
  20. 计划成本法有哪些优势和劣势

热门文章

  1. 计算机c++语言基础算法,程序设计与算法语言(C++)
  2. 车灯线光源的优化设计matlab,基于Matlab的车灯线光源优化设计的实施方案海南大学.PDF...
  3. 推荐一个高仿微信的开源项目,有点屌!
  4. 计算机识别不成USB键盘,如果无法识别计算机键盘该怎么办?提示无法识别的USB设备...
  5. 2021-10-01 用电设备额定电压,发电机额定电压,变压器一次额定电压,变压器二次额定电压,用电设备额定电压,电力网络额定电压,搞懂为什么变压器的空载实验在低压侧进行,做短路试验在高压侧做
  6. 物联网卡管理平台哪家好
  7. Pushmall共享电商营销推广平台2023年6月升级进度
  8. Linux清除木马minerd
  9. 【bzoj 2820】YY的GCD(莫比乌斯反演)
  10. 普源DS1074Z数字示波器技术参数