现在越来越多的android应用中开始集成即时通讯功能,尤其是在各种社交软件中,即使通讯功能几乎已成标准配置,我们天天使用的qq,微信,陌陌,line,whatsapp等都可以说是IM类应用。同时有过android开发经验的人都知道,要独立开发一个即时通讯系统是非常复杂的,因为它不同于一般的功能,需要有较为丰富的开发经验。我以前也一直想要开发一个即时通讯类聊天应用,可以实现单聊,群聊,发语音,图片,文字等功能。但后来发觉其背后的技术难度很大,但经过自己的一些学习还是有一些了解:

我所知道的常用的聊天功能的实现方式大概有以下几种:

1.消息推送技术,消息推送可以基于第三方的消息推送技术,如百度云推送,极光推送,个推等,这些鞋都是第三方提供的消息推送技术,去它们的官网下载SDK,,调用相应的API即可开发出自己所需的聊天功能,不过说起来简单,实际开发还是有一定难度的!

2.基于XMPP协议和开源服务器实现聊天功能,XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它主要就是用于即时消息(IM),常用的即时通讯类开源服务器应该就是Openfire了,似乎很多即时通讯类应用都是使用XMPP+Openfire+smack(android上为asmack)的方式开发的。我最开始想开发聊天功能的时候,想到的就是用Openfire,于是在官网上下载了开发文档等各种资料,在网上搜了很多讲解教程和文档来学习,但是因为时间原因,我还没有掌握这种开发方式,不过庆幸的是,一种新的IM功能开发技术开始出现了,利用它能过比较快的开发出即时通讯功能,现在我就是用这种技术开发出了自己的IM应用,具体是什么技术呢?哈哈,接下来就为大家介绍。

3.基于第三方的IM开发技术服务来实现聊天功能,说它是一种新技术,其实也不是。比如环信,环信是一个提供第三方IM类应用解决方案的公司,他们已经封装好了一套开发即时通讯功能的API,如果你想在你的应用中集成IM功能,那你只需要去他们的官网上注册应用,然后调用他们的API来开发自己的IM功能,开发速度相比于之前能够大幅提升,开发难度也会降低不少。我最后就是基于环信的SDK实现了IM功能,从而完成了自己的应用。

现在越来越多的公司开始提供IM功能开发的SDK,就像友盟,Sharesdk提供的第三方社会化分享服务一样,你只需要在他们的官网上注册你的应用,下载相关开发文档,就可以轻松地在自己的应用中集成IM功能了,我想以后很多应用要集成IM功能都会基于他们的SDK进行开发吧!这些公司很多都还是初创公司,所以说我们做程序员还是要时刻关注新技术,说不定你现在绞尽脑汁都开发不出的东西,已经有了新的技术可以轻而易举的实现了!所以从今天起,时刻关注新技术吧!

本人自己基于环信的SDK开发的一款聊天应用基本实现了创建话题聊天(类似于群聊),语音,文字,图片发送功能,由于还只是测试版,很多bug还没解决,原代码就不贴出来了,有需要的可以在评论中留下联系方式,我把源码发过来!还有对Openfire有研究的人欢迎一起交流,因为之前粗略学过Openfire的一些东西,但是中间因为各种事情耽误了,导致基本上先前学到的那一点东西也忘了,现在想有时间的时候再继续研究,毕竟之前花过时间,不想半途而废,希望有经验的大神能够指导一下!