现在的外包项目需求变态的各种各样,今天要做社交,明天要加电商,后天又要加直播了,这些系统如果要自己开发,除非大公司技术和人力都够,不然短时间是几乎实现不了的。所以学会灵活利用市面上的各种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. TinyFrame开篇:基于CodeFirst的ORM

    前言 做项目的这段时间,由于比较忙,一直没有机会闲下来思考.正好趁目前手头活儿轻松点,就花了一两天时间搭建了一个比较简单的框架,名称暂时就叫做:TinyFrame吧.顾名思义,就是微框架的意思.虽然这 ...

  2. 《程序设计教学法--以Java程序设计为例》

    <程序设计教学法--以Java程序设计为例> 当老师上的第一门课就是<Java程序设计>,工作以来,断断续续上了近十次课了吧.十几年来,教材.课程内容.教学方法.教学手段不断改 ...

  3. lecture11-hopfiled网络与玻尔兹曼机

    Hinton课程第11课 这部分的课程算是个知识背景,讲述RBM的来源吧,毕竟是按照hopfield--BM-RBM的路线过来的. 因为水平有限,都是直译,如果纠结某句话,肯定看不懂,所以这些课程只需 ...

  4. 如何在 apache 中设置缓存有效时间

    今天学习了下如何在 apache 中设置缓存时间,记之以备忘. 在 http 报文头中,与缓存时间有关的两个字段是 Expires 以及 Cache-Control 中的 max-age,Expire ...

  5. 什么是web框架?

    英文原文:http://jeffknupp.com/blog/2014/03/03/what-is-a-web-framework/ 在原文基础上加上了自己在翻译过程中,查看的资料和自己的一些理解,同 ...

  6. 搭建emacs的go编程语言环境

    关于emacs就不说明了,直接切入主题.关于我的emacs配置,可以直接参考GitHub上的lienhua34/myemacs-conf. go-mode 安装 关于go-mode的安装,可以直接参考 ...

  7. CXF集成Spring实现webservice的发布与请求

    CXF集成Spring实现webservice的发布(服务端) 目录结构: 主要代码: package com.cxf.spring.pojo; public class User { int id ...

  8. IE对象最后一个属性后不要加逗号,否则在IE7及以下版本中会报错

    某函数返回一个对象,如果在最后一个属性后加逗号,IE7及以下版本中会报错 正确代码: return{ top:rect.top-top, bottom:rect.bottom-top, left:re ...

  9. UITextView的使用详解

    //初始化并定义大小 UITextView *textview = [[UITextView alloc] initWithFrame:CGRectMake(20, 10, 280, 30)]; te ...

  10. 1025WHERE执行顺序以及MySQL查询优化器

    转自http://blog.csdn.net/zhanyan_x/article/details/25294539 -- WHERE执行顺序-- 过滤比较多的放在前面,然后更加容易匹配,从左到右进行执 ...