偶然的一天,发现百度出了一个云推送包,想想百度的服务器还是比较靠谱的说,怎么着也比我们自己搭建的服务器要稳定,于是乎,我就花了几天时间,写了一个小小的聊天工具,权当是练手。主要思路是:客户端的聊天内容通过json格式封装(包含聊天内容、发送人信息)之后,HTTP请求百度服务器,即请求把该消息发送到指定id的用户,请求成功之后,百度服务器就把我们的信息转发给指定的用户,对应用户再解析json格式的信息,就可以知道该消息来自何处,以及消息内容。好了,废话不多说,我们先来看看这个小工具的效果图,由于时间比较仓促,bug和错误在所难免,希望朋友们耐心一点,可以自己调试调试,或者把错误信息发送到我邮箱:way.ping.li@gmail.com。谢谢大家,如果我收到邮件,会及时处理的,再次表示感谢!!!
本文源码下载:http://download.csdn.net/detail/weidi1989/5546321
20130726最新版:http://download.csdn.net/detail/weidi1989/5817017
20131028更新到V1.2.3版本:http://download.csdn.net/detail/weidi1989/6465135(建议下载最新版本!)
开源中国托管地址:http://git.oschina.net/way/pushmessage
ChangeLog:
1.增加手势返回。可以手势拖动Activity实现返回,是本次最大的更新,仿ios7.0效果。
2.使用全新的应用Logo,不再使用百度云推送的Logo。
3.使用全新的Splash界面,不再使用QQ界面。
4.其他一些小bug的修复。
5.未升级最新的百度云推送SDK,敬请悉知。
新功能:1.横向滑动刷新以及好友分组高仿QQ分组方式。2.每个好友以及分组增加长按点击事件。如下图所示:
由于代码量还算比较大,我这里就不贴代码了,简单的说一下原理,先来看看源码的结构:
com.way.activity:理所当然的是所有Activity了,不多说。
com.way.adapter:这个是所有用到的适配器,比如ListView等等,也不多说。
com.way.app:这里我放了两个类,一个是Application,被我当作全局变量保存的工具类了,另外一个是接替系统异常处理的类,如果报错了,会把错误信息保存到文件,然后提示用户以邮件的形式发送给我,希望朋友们如果在遇到报错能不吝把log发送给我,谢谢!
com.way.baidupush.client:这里是接收百度服务器推送过来消息的广播接收者:PushMessageReceiver,所有消息都是通过这里接收的,另外我自己加了一个网络变化的接收,根据网络状况作出不同的处理。
com.way.baidupush.server:这里是发送消息的封装,我们要推送的消息是在这里通过HTTP请求百度服务器的,主要是一些HTTP请求的封装,看一下就知道了。
com.way.bean:这是bean包,不多说了,JAVA的基础知识,java bean。
com.way.common.util:这里是我放一些工具类的包,比如Log封装,Toast封装,网络判断,发送消息异步任务,Dialog等等。。。说明一下,这里的JsonUtil是我加工消息内容和解析消息的工具,我把每一条消息封装称json格式,包含发送人的nick、id、头像、发送时间以及消息内容等信息,然后再发送出去,对方收到之后再解析,就可以知道这消息是从何处发送过来的了。
com.way.db:这是是数据库操作包,有User、Message、最近通话都是保存在数据库的。
com.way.fragment:这里是放左右滑动菜单的左菜单和右菜单fragment。
接下来所有的包都是开源项目的view,我就不多作解释了。
朋友下源码去看看吧,另外分享一下我的小金库(今年整理的代码):http://url.cn/GUABFb