现在的外包项目需求变态的各种各样,今天要做社交,明天要加电商,后天又要加直播了,这些系统如果要自己开发,除非大公司技术和人力都够,不然短时间是几乎实现不了的。所以学会灵活利用市面上的各种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的集成,快速搭建自己的聊天系统的更多相关文章

  1. iOS 即时通讯,从入门到 “放弃”?

    原文链接:http://www.jianshu.com/p/2dbb360886a8 本文会用实例的方式,将 iOS 各种 IM 的方案都简单的实现一遍.并且提供一些选型.实现细节以及优化的建议. — ...

  2. iOS即时通讯输入框随字数自适应高度

    代码地址如下:http://www.demodashi.com/demo/13210.html 前言 本人最近在研究socket与聊天界面的UI,在写聊天界面UI的时候是模仿微信的界面其中的文字输入框 ...

  3. iOS即时通讯之CocoaAsyncSocket源码解析三

    原文 前言 本文实例Github地址:即时通讯的数据粘包.断包处理实例. 本文旨以实例的方式,使用CocoaAsyncSocket这个框架进行数据封包和拆包.来解决频繁的数据发送下,导致的数据粘包.以 ...

  4. iOS即时通讯之CocoaAsyncSocket源码解析五

    接上篇:iOS即时通讯之CocoaAsyncSocket源码解析四         原文 前言: 本文为CocoaAsyncSocket Read篇终,将重点涉及该框架是如何利用缓冲区对数据进行读取. ...

  5. iOS即时通讯之CocoaAsyncSocket源码解析四

    原文 前言: 本文为CocoaAsyncSocket源码系列中第二篇:Read篇,将重点涉及该框架是如何利用缓冲区对数据进行读取.以及各种情况下的数据包处理,其中还包括普通的.和基于TLS的不同读取操 ...

  6. iOS即时通讯之CocoaAsyncSocket源码解析二

    原文 前言 本文承接上文:iOS即时通讯之CocoaAsyncSocket源码解析一 上文我们提到了GCDAsyncSocket的初始化,以及最终connect之前的准备工作,包括一些错误检查:本机地 ...

  7. iOS即时通讯之CocoaAsyncSocket源码解析一

    申明:本文内容属于转载整理,原文连接 前言: CocoaAsyncSocket是谷歌的开发者,基于BSD-Socket写的一个IM框架,它给Mac和iOS提供了易于使用的.强大的异步套接字库,向上封装 ...

  8. iOS 即时通讯 + 仿微信聊天框架 + 源码

    这些你造吗? 即时通讯(IM),在IOS这片江湖里面已经算是一个老者了,我这小旋风也是在很早以前巡山的时候,就知道有即时通讯这个妖怪,以前也多多少少接触过一些,在造APP的时候用过,哎呀,说着说着就感 ...

  9. iOS:即时通讯之<了解篇 SocKet>

    什么是socket? 计算机专业术语就是: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进 ...

随机推荐

  1. codevs1501 二叉树最大宽度和高度

    难度等级:白银    1501 二叉树最大宽度和高度 题目描述 Description 给出一个二叉树,输出它的最大宽度和高度. 输入描述 Input Description 第一行一个整数n. 下面 ...

  2. YII框架概念与安装

    Yii概念: YII安装:      下载最版本http://www.framework.com      解压至访问目录下 直接打开advanced/init.bat文件输入0之后输入yes 打不开 ...

  3. left join 条件区别

    t1: num | name-----+------ 1      | a 2      | b 3      | c t2: num | value-----+------- 1  | xxx 3 ...

  4. Java实现生产者和消费者

    生产者和消费者问题是操作系统的经典问题,在实际工作中也常会用到,主要的难点在于协调生产者和消费者,因为生产者的个数和消费者的个数不确定,而生产者的生成速度与消费者的消费速度也不一样,同时还要实现生产者 ...

  5. opencv4-highgui之视频的输入和输出以及滚动条

    这是<opencv2.4.9tutorial.pdf>的highgui的三个例子.通过简短的介绍来实现不同函数的理解,省去一些不需要说的东西. 一.增加滑动条 这是opencv中为数不多的 ...

  6. 【前端也要学点算法】快速排序的JavaScript实现

    作为算法目录下的第一篇博文,快速排序那是再合适不过了.作为最基本最经典的算法之一,我觉得每个程序员都应该熟悉并且掌握它,而不是只会调用库函数,知其然而不知其所以然. 排序算法有10种左右(或许更多), ...

  7. IIS安装与MVC程序部署

    最近在做访客系统,虽然说不是什么多大的项目,但麻雀虽小五脏俱全,使用EF Code First+Mysql+Frozenui响应式布局,感觉通过这个项目学到好多东西,Mysql的使用.EF映射Mysq ...

  8. js时间倒计时

    看了网上的其他的例子,觉得写的都有点复杂,不好理解,于是自己动手写了个. 本来想封装成jquery插件,但是觉得因为功能很简单,没有必要做成jquery插件,引用的时候不需要引入jqery库,这里直接 ...

  9. matlab 画图中线型及颜色设置

    matlab受到控制界广泛接受的一个重要原因是因为它提供了方便的绘图 功能.本章主要介绍2维图形对象的生成函数及图形控制函数的使用方 法,还将 简单地介绍一些图形的修饰与标注函数及操作和控制MATLA ...

  10. BroadcastReceiver之发送自定义无序广播

    首先,发送一个自定义广播:(用sendBroadcast(intent)发送一条无序广播) public void click(View v){ Intent intent = new Intent( ...