iOS 即时通讯SDK的集成,快速搭建自己的聊天系统
现在的外包项目需求变态的各种各样,今天要做社交,明天要加电商,后天又要加直播了,这些系统如果要自己开发,除非大公司技术和人力都够,不然短时间是几乎实现不了的。所以学会灵活利用市面上的各种SDK是灰常重要的技能。
最近继续在做的项目是一个气象救灾类APP,里面需要进行聊天的即时通讯模块。目前已经实现,效果如下:

一、市面上的即时通讯SDK
目前市面上的即时通讯SDK大概有:融云、网易云信、容联云等。非常多。
较为稳定、功能较全的应该是网易云信了,界面如下:

但是我们的应用需要的即时通讯是一个模块,已经有TabBar作为基本的界面布局,聊天模块Tab形式比较合适,所以方便集成,使用了容联云的Demo。
(当然也可以使用云信的SDK然后自己写界面)
二、即时通讯SDK的运作逻辑:

一般提供SDK的平台,只提供通讯能力,几乎不提供用户资料管理。毕竟如果客户要对个人信息做各种各样的自定义需求的话,云平台提供不了这么多自定义的接口。另外数据安全也是客户考虑的因素,所以现在的云平台一般都只相当于一个信息传递中介。
上图就是其运作逻辑,APP和APP,或者WEB和APP的即时通讯,直接走云平台的服务器,这个服务器里存储的,只有UserA的ID和UserB的ID,和其聊天的内容。如果我们后台要获取聊天记录的话,就通过另外的接口获取。而这些平台的盈利点,也就是通过保存聊天记录来收费,或者加入更高级的功能,比如视频通话等。
三、即时通讯模块的嵌入
1.两套账号的绑定
假如想要做用户系统的话,那我们一定要有自己的账号密码。而云平台有一套登陆的VOIP账号密码,但不涉及具体的用户信息管理。
所以我们需要对用户账号和云平台账号一对一进行绑定。
操作流程简单而言登录用我们自己平台的账号。在登陆后,获取到返回的账号密码,然后对云平台的通讯系统进行登陆。
2.做好由云平台账号获取用户信息的接口
这里麻烦的地方在于,聊天模块的所有用户资料云平台是不存储的,比如电话、地址等(也许你也并不希望他们去存)。所以聊天模块加载的时候,都只有VOIP跟VOIP之间的关系。【不过一般他们都会存用户对应的姓名(或昵称),这样的话聊天模块加载的时候,至少姓名可以加载出来。】
所以我们必须想方式,通过VOIP来从我们自己数据库找到该用户的具体信息来显示。比如好友关系、电话等更详细信息,容联云都是没有做的,需要存在我们自己的数据库里然后通过接口取出来。
这一块,我实现的方式是,首先登陆的时候,通过我们的服务器下载用户的通讯录(好友关系),通讯录包含了好友们的基本信息和VOIP账号。
然后要获得某个好友的信息,通过VOIP账号进行本地查询就够了。如果需要更多信息,可以另外做接口。

demo下载:
网易云信:http://www.netease.im/?page=download
容联云:http://www.yuntongxun.com/api/im/sdkDemo#point_box
iOS 即时通讯SDK的集成,快速搭建自己的聊天系统的更多相关文章
- iOS 即时通讯,从入门到 “放弃”?
原文链接:http://www.jianshu.com/p/2dbb360886a8 本文会用实例的方式,将 iOS 各种 IM 的方案都简单的实现一遍.并且提供一些选型.实现细节以及优化的建议. — ...
- iOS即时通讯输入框随字数自适应高度
代码地址如下:http://www.demodashi.com/demo/13210.html 前言 本人最近在研究socket与聊天界面的UI,在写聊天界面UI的时候是模仿微信的界面其中的文字输入框 ...
- iOS即时通讯之CocoaAsyncSocket源码解析三
原文 前言 本文实例Github地址:即时通讯的数据粘包.断包处理实例. 本文旨以实例的方式,使用CocoaAsyncSocket这个框架进行数据封包和拆包.来解决频繁的数据发送下,导致的数据粘包.以 ...
- iOS即时通讯之CocoaAsyncSocket源码解析五
接上篇:iOS即时通讯之CocoaAsyncSocket源码解析四 原文 前言: 本文为CocoaAsyncSocket Read篇终,将重点涉及该框架是如何利用缓冲区对数据进行读取. ...
- iOS即时通讯之CocoaAsyncSocket源码解析四
原文 前言: 本文为CocoaAsyncSocket源码系列中第二篇:Read篇,将重点涉及该框架是如何利用缓冲区对数据进行读取.以及各种情况下的数据包处理,其中还包括普通的.和基于TLS的不同读取操 ...
- iOS即时通讯之CocoaAsyncSocket源码解析二
原文 前言 本文承接上文:iOS即时通讯之CocoaAsyncSocket源码解析一 上文我们提到了GCDAsyncSocket的初始化,以及最终connect之前的准备工作,包括一些错误检查:本机地 ...
- iOS即时通讯之CocoaAsyncSocket源码解析一
申明:本文内容属于转载整理,原文连接 前言: CocoaAsyncSocket是谷歌的开发者,基于BSD-Socket写的一个IM框架,它给Mac和iOS提供了易于使用的.强大的异步套接字库,向上封装 ...
- iOS 即时通讯 + 仿微信聊天框架 + 源码
这些你造吗? 即时通讯(IM),在IOS这片江湖里面已经算是一个老者了,我这小旋风也是在很早以前巡山的时候,就知道有即时通讯这个妖怪,以前也多多少少接触过一些,在造APP的时候用过,哎呀,说着说着就感 ...
- iOS:即时通讯之<了解篇 SocKet>
什么是socket? 计算机专业术语就是: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进 ...
随机推荐
- React入门 (1)—使用指南(包括ES5和ES6对比)
前言 本篇会简明扼要的介绍一下React的使用方法.代码会用JSX+ES5和JSX+ES6两种方式实现. React简介 React来自Facebook,于2013年开源.至今不断修改完善,现在已经到 ...
- ASP.NET Web API Help Pages using Swagger
Understanding the various methods of an API can be a challenge for a developer when building a consu ...
- 【6年开源路】海王星给你好看!FineUI v4.0正式版暨《FineUI3to4一键升级工具》发布!
去年10-28号,我发布了一篇文章<海王星给你好看!FineUI v4.0公测版发布暨<你找BUG我送书>活动开始>,标志着FineUI开始向4.0版本迈进.经过4个月3个公测 ...
- BatsingJSLib 2.3、Ajax上传多个文件
//2.3Ajax上传单个或多个文件 //<input type="file" multiple="multiple"/> //参数:文件的表单JD ...
- 汤姆大叔的6道javascript编程题题解
看汤姆大叔的博文,其中有篇(猛戳这里)的最后有6道编程题,于是我也试试,大家都可以先试试. 1.找出数字数组中最大的元素(使用Math.max函数) var a = [1, 2, 3, 6, 5, 4 ...
- 不得不玩玩NHibernate
1.0=>前言 放着好好的EF不用,为什么要来玩NHibernate了?那是因为现在的工作内容就是维护一个比较老的项目,第一版是公司找外包做的,跟数据库打交道这块用的NHibernate,虽然都 ...
- PHP 依赖注入,从此不再考虑加载顺序
说这个话题之前先讲一个比较高端的思想--'依赖倒置原则' "依赖倒置是一种软件设计思想,在传统软件中,上层代码依赖于下层代码,当下层代码有所改动时,上层代码也要相应进行改动,因此维护成本较高 ...
- Scala集合操作
大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: 1.数据集合:会涉及数据的搜集.存储等,搜集会有很多技术,存储技术现在比较经典方案是使用Hadoop,不过也很多方案采用Kafka. ...
- 20151120 - 蓝牙鼠标与 WiFi 冲突的解决办法
问题现象描述:Windows 下蓝牙鼠标移动时不连贯 电脑:Dell 2015 版 NEW XPS 15 鼠标:Microsoft Bluetooth Designer Mouse 操作系统:Wind ...
- MVC认知路【点点滴滴支离破碎】【二】----Razor服务器标记语言
Razor 代码块包含在 @{....}中 内嵌表达式(变量和函数)已 @ 开头 代码语句用分号结束 变量使用 var 关键字声明 字符创用引号括起来 C#代码区分大小写 C#文件的扩展是 .csht ...