前言:

对于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];

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错误");}];

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];
}

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];}

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

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

尾巴:

以上就是实现单聊的聊天界面和会话列表界面的全部内容,你只需要在模拟器上运行一遍,更换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. 去重之后统计条数_BOPET:12的普通包装膜到底去哪了?
  2. html细边框表格代码,html中表格细边框的四种实现及其比较.doc
  3. 深入理解SQL注入绕过WAF与过滤机制
  4. After Keying for mac(AE头发细节优化还原抠像脚本)v1.04
  5. inotifypropertychanged接受不执行_scp客户端现多个漏洞,可执行恶意脚本
  6. ExtJs之Ext.data.Store
  7. Python——OpenCV形态学处理(膨胀与腐蚀)
  8. Cornerstone 4 for Mac(SVN管理工具)
  9. IT 人的国庆大阅兵,太好好好好好好看了吧 ……
  10. [CareerCup] 17.1 Swap Number In Place 互换位置
  11. mysql 指定ip段 掩码_IP分配及网段划分
  12. js分解GIF图片以及合成GIF图片
  13. keil 不能F12跳转到定义
  14. Automatic classification of defective photovoltaic module cells in electroluminescence images-论文阅读笔记
  15. ISO7816 调试心得
  16. 怎么搜集家谱资料?四个内容两个方法,打造传世的精神财富
  17. 数学3大分支:代数、几何、分析 //转载
  18. [Swift]LeetCode871. 最低加油次数 | Minimum Number of Refueling Stops
  19. 电子技术——反馈电压放大器
  20. 苹果企业开发者账号申请记录

热门文章

  1. 【fiddler】用fiddler实现iPhone手机抓包
  2. 数字电路仿真软件Minecraft—(2)红石特性电路
  3. isnumeric java_Java StringUtils.isNumeric方法代码示例
  4. 企业为什么要开通银企直联_胜意费控云 | 什么是银企直联,它有什么作用?
  5. eclipse 或 sts 安装 antlr 插件
  6. 第十七章、Model/View开发:QListView的功能及属性
  7. C++制作五子棋小游戏
  8. WebApi测试工具:SAEA.RESTED
  9. 语义分割标签处理RBG 到gray再转回RGB(通用)
  10. uniapp 去掉h5导航(微信公众号去掉和h5保留)