1、前期准备:需要在融云注册app,获取appkey在AppDelegate中进行注册。环境分为开发环境和生产环境,调试可以用开发环境,app上线需要注册生产环境。

2、获取用户token(用来用户身份认证的,通过用户的token,获取用户的信息)的过程:

如果没有服务器,融云提供了调试的接口,点击提交即可获取token来进行测试:

3、获取到token之后就可以调用-connectWithToken:
success:error:tokenIncorrect: 方法与融云服务器建立连接,这个方法在程序运行过程中只需要调用一次,在网络断开或者前后台切换的情况下,会自动重连,除非是手动断开连接,是需要再次调用该方法进行重连。

需要注意两点:

1)该方法有一个成功的回调和一个错误的回调,在错误回调中,有一种错误状态是本来已经连接成功的,需要进行判断:

2)登陆成功之后,可以将token存到沙盒偏好设置中进行存储。需要注意,该方法的回调是在子线程中进行的,如果需要进行ui操作,需要切换到主线程。

4、登陆成功,跳转到会话列表控制器,融云已经提供了一个会话列表控制器 (RCConversationListViewController),我们可以创建一个控制器继承自RCConversationListViewController。属性displayConversationTypeArray可以设置显示的聊天类型(单聊、讨论组、群聊、聊天室、客服等)。

会发现会话列表中的用户头像和用户名字不显示,为了解决这个问题,需要创建一个单独的类,遵守协议RCIMUserInfoDateSource,这个类用来管理用户信息的,用户信息可以从服务器或者缓存中读取,可以获取用户信息、缓存用户信息、删除用户信息。然后将这个类初始化,传给[RCIM sharedRCIM],RCIM就可以从该类中读取用户信息。

5、会话界面,融云也提供了一个控制器类(RCConversationViewController),同样创建一个控制器继承自它,初始化方法中需要传递displayConversationTypeArray和targetId(和谁进行会话)。

自定义消息cell(文字、表情、红包、位置、语音)等:

分两步:

第一步:自定义消息并注册消息类型:需要继承自RCMessageContent类,实现三个协议:

消息发送的流程:

消息接收流程,下图主要介绍的是离线接收消息:

第二步:自定义cell并注册cell(继承自融云提供的RCMessageBaseCell或RCMessageCell(布局更复杂))

这两种cell的区别:第二种有头像和名字,第一种没有。

自定义cell需要有三步,第一步注册cell(register方法,和collectionView注册方法相似),第二步返回cell item实例的方法

这个方法当只有自定义cell的时候才会调用,例如文本消息、图片消息、语音消息不是自定义的就不会走这个方法。

第三步,实现返回cell大小的方法。

6、发送红包功能

在会话控制器的父类RCConversationViewController中有一个属性 RCPluhinBoardView * pluginBoardView,扩展功能板view,可以扩展发送地理位置、图片、红包等功能。

使用该view下面的方法,可以添加扩展项。

实现该view的代理方法,在代理方法中监听到点击某个扩展项的回调,可以根据上面方法中的tag值进行相应的处理。

发送消息时会调用下面的方法

方法中的参数说明和注意事项如下:

自定义红包消息类,继承自第五条提到的RCMessageContent,红包需要有两个属性,amount(红包金额),desc(描述)。然后实现RCMessageContent中的三个协议的方法,第一个协议RCMessageCoding,进行json之间的编码和解码;第二个协议RCMessagePersistentCompatible,是否需要存入本地和计入未读数,红包消息是需要进行本地存储和进行未读数的,只要返回枚举的第三个选项即可;第三个协议RCMessageContentView,在会话列表中显示的红包消息摘要内容。

自定义红包cell类,继承自RCMessageCell类,这个cell类中有一个messageContentView,是用来放消息内容的视图,这个视图有一个setEventBlock:,cell大小发生改变的时候调用该方法,可以给消息中子视图重新布局。

7、撤回消息:

撤回消息的实现流程,长按消息,消息上方出现复制/删除/撤回的视图,点击撤回,删除该条消息本地存储,发送给融云服务器,服务器告诉对方客户端这是一条撤回消息,进行撤回。

当点击消息cell时,会触发下面的方法,在UIMenuControlle为消息上方出现的消息处理视图

在recall: 方法中需要做的处理是发送一条撤回消息,撤回消息cell和红包消息cell一样需要自定义,也需要一个继承自RCMessageContent的messageContent类,但是撤回消息需要进行本地存储,但不需要计入未读数。

然后将该撤回消息发送给对方客户端,把当前的长按消息删除掉。本地消息删除掉了,远程的怎么删除:

实现上面的代码,在下面的代码中接收撤回消息

先判断是否是撤回消息,然后从当前消息列表中找是否有该消息,然后进行删除
自定义撤回消息cell,只需要继承自RCMessageBaseCell,自定义里面的内容。

作者:萤火虫离别的礼物
來源:简书

融云即时通讯云学习笔记相关推荐

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

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

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

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

  3. 即时通讯云服务免费 破解APP社交化困局

    2014年7月14日消息,在过去的一周里,开发者林迪和他的小伙伴们都通过融云的免费即时通讯云服务接入,顺利实现了自己生活服务类APP的社交化. 不仅实现了单聊功能,本以为会遭遇冷场的群聊功能却意想不到 ...

  4. 即时通讯云服务·融云开发者沙龙活动(10月份)公告

    活动名称:让你的手机App"聊"起来 活动形式:免费参加的线下交流会 主讲人:杨攀 活动人数:限70人 报名方式:报名者给融云微信公众号发送如下消息内容即报名成功,"我要 ...

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

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

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

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

  7. iOS-融云即时通讯

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

  8. ios--融云即时通讯

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

  9. 网易即时通讯云平台99.99%可靠性的运维经验谈

    网易即时通讯云平台99.99%可靠性的运维经验谈 转载自:http://mp.weixin.qq.com/s?__biz=MzIzNjUxMzk2NQ==&mid=2247483968& ...

  10. 环信即时通讯云iOS版V2.0.9.1服务评测

    集成测试 评测环境 2G/3G/WiFi网络下: 测评环境 MAC OS(10.9.2)+ XCode(5.1) + iPhone 测试对象 环信即时通讯云 IOS SDK Version 2.0.9 ...

最新文章

  1. 宁波工程学院2020新生校赛(重现赛)部分题解
  2. @Resource注解研究和在SAP Hybris ECP中的应用
  3. 如何为报表服务器设置SQL Server数据库复制
  4. Python迭代文件对象
  5. 修改手游服务器端数据库,手游服务端框架之配置与玩家数据库设计
  6. 别怕,“卷积”其实很简单
  7. 聚类:Python遗传算法
  8. Filenet 周报(12.02-12.08)
  9. Excel导入数据库(vue+py)py部分
  10. 小米无线路由器服务器用户名和密码忘了,小米路由器密码忘记了怎么办 小米路由器密码忘记解决办法【详解】...
  11. 如何使用火焰图对Spark的executor的CPU使用率进行profile?具体步骤,如何操作?
  12. java生成pdf文件乱码问题解决
  13. 中国动感单车行业销售模式与营销渠道预测报告2021-2026年
  14. 耀世升级发布,阿里新出第三版Java多线程核心技术手册PDF全彩版
  15. UG NX 三维PMI标注培训
  16. 王权游戏中“帽子王”成就的获取
  17. HWND与HANDLE的区别
  18. 实现仿若依后台管理主要功能
  19. Spring Boot 优雅停机
  20. presto(一) presto概述

热门文章

  1. 我的Ubuntu计算机出现“黑屏”,何故?
  2. afuwin64教程_华硕主板BIOS降级强刷教程
  3. vbscript 微软教程网址
  4. 关于联想硬盘保护卡还原卡同传不能连接无法登录的解决方法
  5. python发邮件被认定为垃圾邮件_【python文本分类】20行代码识别垃圾邮件
  6. C++实现【启发式搜索】算法
  7. 一文了解单线激光扫描系统的标定与成像原理
  8. 实验2-1-2 温度转换 (5 分)
  9. SQLite3下载与安装
  10. SSL安全证书不受信任怎么办