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