前言:

对于iOS开发,目前比较流行的即时通信有:融云、环信、网易云信,都是不错的选择。由于工作需求,笔者粗略的学习了一下融云即时通讯。下面就简单的总结一下如何集成单聊的聊天界面。


简介:

融云是国内首家专业的即时通讯云服务提供商,专注为互联网、移动互联网开发者提供免费的即时通讯基础能力和云端服务。通过融云平台,开发者不必搭建服务端硬件环境,就可以将即时通讯、实时网络能力快速集成至应用中。

融云 SDK 包括两部分:IM 界面组件和 IM 通讯能力库。

IM 界面组件 - IMKit

IMKit 是融云 SDK 的核心特色之一。融云将即时通讯产品中最复杂的会话列表、聊天窗口、消息内容展现、会话设置等功能封装为组件,通过简短的代码,您就可以直接将以上界面集成到您的 App 产品中,省去大量的开发调试时间。融云同时支持业内最丰富的自定义界面组件功能,您可以针对自己界面需求自由设计开发。

IM 通讯能力库 - IMLib

IMLib 是不含界面的基础 IM 通讯能力库,封装了通信能力和会话、消息等对象。引用到 App 工程中后,需要开发者自己实现 UI 界面,相对较轻量,适用于对 UI 有较高订制需求的开发者。


前期准备:

建议先浏览融云SDK开发文档: http://www.rongcloud.cn/docs/ios.html, 因为里面讲的很详细

一.注册开发者账号  http://www.rongcloud.cn

二.创建应用,创建完应用之后,在你的应用中,会自动创建两套的环境,即:开发环境和生产环境。同时你会获得App Key 和App Secret,它们是融云 SDK 连接服务器所必须的标识,每一个 App 对应一套 App Key 和 Secret。

三.下载与导入SDK,有两种方式可选(推荐使用CocoaPods安装SDK,因为可极大简化安装过程) 
1.使用CocoaPods导入融云SDK,这里就不再赘述,自行百度,很简单的。 
2.手动导入融云SDK,你可以到融云官方网站下载融云SDK http://www.rongcloud.cn/downloads

注意:如果你使用 IMKit,您需要将所有的文件导入您的工程中; 如果您使用 IMLib,您需要导入除 RongIMKit.framework 和 RongCloud.bundle 之外的所有文件。

代码编写:

1.初始化SDK(在AppDelegate.m方法中引入SDK以及注册应用)

#import <RongIMKit/RongIMKit.h>
#define kRongCloudKey @"bmdehs6pdbp3s" //你注册应用的App Key
[[RCIM sharedRCIM] initWithAppKey:kRongCloudKey];
  • 1
  • 2
  • 3

2.获取Token值

Token 即用户令牌,相当于您 APP 上当前用户连接融云的身份凭证。在您连接融云服务器之前,您需要请求您的 App Server,您的 App Server通过Server API 获取 Token 并返回给您的客户端,客户端获取到这个 Token 即可进入下一步连接融云服务器。

为什么必须在服务器端请求 Token,客户端不提供获取 Token的接口?

因为获取 Token 时需要提供 App Key 和 App Secret。如果在客户端请求 Token,假如您的 App 代码一旦被反编译,则会导致您的 App Key和App Secret 泄露。所以,务必在您的服务器端获取 Token。

我们在开发者控制台提供了 API 调试的功能,在开发初期阶段,您可以通过其中获取 Token 功能,手动获取 Token 进行测试。

3.连接服务器

将您在上一步获取到的 Token,通过 RCIM 的单例,传入 -connectWithToken:success:error:tokenIncorrect: 方法,即可建立与服务器的连接。

    //获取Token值NSString *token1 = @"获取的第一组的token";//连接服务器[[RCIM sharedRCIM] connectWithToken:token1 success:^(NSString *userId) {NSLog(@"登录成功。当前登录的用户ID:%@",userId);[[NSUserDefaults standardUserDefaults] setObject:userId forKey:@"userId"];[[NSUserDefaults standardUserDefaults] synchronize];} error:^(RCConnectErrorCode status) {NSLog(@"登录的错误码为:%ld",status);} tokenIncorrect:^{//token过期或者不正确。//如果设置了token有效期并且token过期,请重新请求您的服务器获取新的token//如果没有设置token有效期却提示token错误,请检查您客户端和服务器的appkey是否匹配,还有检查您获取token的流程。NSLog(@"token错误");}];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

4.启动聊天界面

融云 IMKit 中已经实现了完整的聊天界面,包含发送、接收、更新等 UI,并覆盖常用的IM交互场景,您直接使用或继承 RCConversationViewController,即可快速启动和使用聊天界面。

添加一个启动聊天按钮,直接调起单聊界面

- (IBAction)xiaoming:(id)sender {//新建一个聊天会话View Controller对象RCConversationViewController *chat = [[RCConversationViewController alloc] init];//设置会话的类型,如单聊、讨论组、群聊、聊天室、客服、公众服务会话等chat.conversationType = ConversationType_PRIVATE;//设置会话的目标会话ID。(单聊、客服、公众服务会话为对方的ID,讨论组、群聊、聊天室为会话的ID)chat.targetId = @"获取第二组的用户id";//实现两个账号间通信//设置聊天会话界面要显示的标题chat.title = @"会话标题";//显示聊天会话界面[self.navigationController pushViewController:chat animated:YES];
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

5.启动会话列表界面

融云 IMKit 已经实现了一个默认的会话列表视图控制器,你直接使用或继承 RCConversationListViewController,即可快速启动和使用会话列表界面。

首先新建一个TestChatViewController的类,继承于RCConversationListViewController,在viewDidLoad中设置需要显示的会话类型,需要将哪些类型的会话聚合显示。

//TestChatViewController.h
#import <RongIMKit/RongIMKit.h>@interface TestChatViewController : RCConversationListViewController@end//TestChatViewController.m#import "TestChatViewController.h"@interface TestChatViewController ()@end@implementation TestChatViewController- (void)viewDidLoad {//重写显示相关的接口,必须先调用super,否则会屏蔽SDK默认的处理[super viewDidLoad];//聚合显示指的是此类型所有会话,在会话列表中聚合显示成一条消息,点击进去会再显示此类型的具体会话列表//设置需要显示哪些类型的会话[self setDisplayConversationTypes:@[@(ConversationType_PRIVATE),@(ConversationType_DISCUSSION),@(ConversationType_CHATROOM),@(ConversationType_GROUP),@(ConversationType_APPSERVICE),@(ConversationType_SYSTEM)]];//设置需要将哪些类型的会话在会话列表中聚合显示[self setCollectionConversationType:@[@(ConversationType_DISCUSSION),@(ConversationType_GROUP)]];}/***重写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 = ConversationType_PRIVATE;conversationVC.targetId = model.targetId;conversationVC.title = @"会话标题";[self.navigationController pushViewController:conversationVC animated:YES];}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

然后初始化会话列表并显示

TestChatViewController *chatList = [[TestChatViewController alloc] init];
[self.navigationController pushViewController:chatList animated:YES];
  • 1
  • 2

尾巴:

以上就是实现单聊的聊天界面和会话列表界面的全部内容,你只需要在模拟器上运行一遍,更换token值和UserId,再次运行在真机上,就可实现真机与模拟器间即时通讯。 
最后补充一点:如果你的融云账号创建的项目 是很久之前的, 一直没使用, 那融云会默认 APP Key 失效, 无法在API调试中 获取到token.

ios--融云即时通讯相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 融云即时通讯后续:产品需求与融云的碰撞

    产品需求与融云的碰撞 一.融云聊天消息推送功能 产品需求:多端同步登录,消息同步,且多端能同步收到消息推送 融云目前实现的功能:多个APP消息同步,应用在前台能同时收到消息(我在溜达和卖家端都能即时收 ...

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

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

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

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

最新文章

  1. Linux文件系统上的特殊权限      SUID, SGID, Sticky(粘之位)
  2. 成功解决.sh: line 6: syntax error near unexpected token `do
  3. 3.Android的学习(你的第一行代码HelloWorld!)
  4. boost::statechart::in_state_reaction相关的测试程序
  5. java 文本编辑器 源码_java文本编辑器源码
  6. ssh 执行多条命令包含awk的用法
  7. 作为一个部门 Leader,居然不如一个实习生
  8. ROS 2正式版终于来了,还增加了这些新特性
  9. 中国红色菜刀去后门(过狗)
  10. 【CS论坛】维护网络安全的四块基石
  11. 看法:2017会带给我们的文化和方法
  12. 山石防火墙CLI创建VLAN
  13. python图像处理(十一)——图像锐化与边缘检测之Roberts算子、Prewitt算子、Sobel算子、Laplacian算子
  14. 数据错误(循环冗余检查) 各种解决方法
  15. 搜索与图论模板题(必备)Day3
  16. Alex - 用python来写测手速游戏
  17. Linux 详解socket实现与网络编程接口
  18. 【LaTex】备忘录
  19. 《Head First 设计模式》读书笔记——迭代器模式
  20. 客户端命令行工具 - 接口调试神器 HTTPie

热门文章

  1. python 字典长度_python字典详解
  2. final、static、static fina区别
  3. 输入三角形的三条边长,计算出其面积并输出。
  4. clientX,clientY,offsetY,offsetX,screenX,screenY区分
  5. DataOps 标准体系能力框架及实践
  6. 使用PHP添加圆形头像
  7. 你口口声声说放不下一个人
  8. AndroidStudio提交代码到Github的登录不了BUG错误提示:http://127.0.0.1:63342/api/github/oauth/authorization_code
  9. 我的世界服务器跟随的血条信息,我的世界怎样在生物头上显示名称和血条 | 手游网游页游攻略大全...
  10. 解决Make时,“/usr/bin/ld: 找不到 -lXXX”问题的四种方法