手机上的消息推送

http://www.cnblogs.com/yjl49/archive/2012/05/17/2506819.html

最近在找android手机上的消息推送的解决方案。目前看来有以下几种常用的方式:

1.定期查询:按照指定的时间间隔连接服务器查询获取最新的消息。实现起来简单,非实时,查询时间过短则流量耗费多,耗电量大。下面是一个爱立信的测试结果:

2.短信方式:需要及时发送消息给客户端时也可以通过这种方式,但大家都懂的,这个很花钱。

3.长轮询:基本上与目前很多网站使用的方式一样(WEB阿里旺旺、微博、人人等等)。客户端发起一个很长超时时间的请求,然后服务器端在没有消息的时候阻塞这个请求(一直不给返回值)直到快要超时为止,有消息到来再返回响应。客户端收到响应或超时后立即再发起请求。

这种算是比较好的方式了,消息能够及时地到达客户端。但考虑到移动互联网的特点(网络不稳定、设备内存小)这种方式不能保证重要的消息一定能推送到客户端,另外anroid在手机内存小的情况下可能会杀这个在等待PUSH消息不怎么活动的进程。

4.C2DM:GOOGLE提供了消息的PUSH功能,需要和GOOGLE账号绑定,目前看来这种方式在国内是没戏的。

5.XMPP:在客户端集成asmack,服务器端使用ejabberd或openfire等开源的XMPP服务器软件也是一种可行的方式。

缺点就是先要有注册、登陆等过程,无线网络环境下连接的效果不怎么样。重要消息的PUSH需要自己实现确认逻辑。

6.MQTT:基于代理发布/订阅 模式的消息传输协议,适用于受限环境:
网络代价昂贵、带宽低、不可靠;
在嵌入设备中运行、处理器和内存资源有限。
特点是:
使用发布/订阅模式,解除应用程序耦合;
对负载内容屏蔽的消息传输;
使用TCP/IP;
提供“至多一次”、“至少一次”、“有且仅有一次”三种级别的消息传输;
小型传输、流量开销少;
使用LAST WILL 和TESTAMENT特性通知有关各方客户端异常中断机制。

移动端即时聊天解决方案
主要问题应该是协议的选择吧,我了解到的常见的协议有XMPP和MQTT:
XMPP协议在PC端用的比较多,对应的有不少成熟的开源组件,但是XMPP协议传输的冗余信息太多,看起来不适合移动端;
MQTT协议轻很多,但能搜到的讲如何应用的文章并不多,它使用的组件也没听过。
我想知道:
现在移动端做即时通讯的话用这两个协议的多么?
如果不使用已有协议,自己搞一套的话成本大吗?

一般基于xmpp,要嘛自己搭建openfire,成本搞。一般是基于第3方平台。个推,极光推送,信鸽,云之讯等
XMPP 对移动应用来说一般认为比较重,开发者自己维护长连接服务器难度也比较大。
我建议你用 AVOS Cloud 的实时通信服务来搭建聊天服务,服务器端由云服务搞定,你只要制定自己的通信和控制协议,利用我们的 SDK 编写客户端即可。我们已经有百姓网“私信功能”这样的成熟案例,可以了解一下。

android即时通讯功能开发思路?

现在开发的应用需要一个即时通讯模块,需求要求有文本、图片、语音的通讯功能。

请问有经验的同志,即时通讯功能大体是一个什么样的开发思路呢?比如:最基础的即时通讯需要用到哪些技术?android或者java中是否已经存在即时通讯方面的框架?也就是说,如果是你开发这个功能的话,你的一个大体开发思路是怎么样的呢?

本人仅仅会一些java基础,并没有多少网络编程基础,最好说的具体、浅显一些,感激不尽!

现在有不少开发者服务商有即时通讯的功能,我列举一些我SegmentFault 的合作伙伴的类似功能,你可以通过他们的思路做一些参考
LeanCloud: https://leancloud.cn/features/message.html
环信:http://www.easemob.com/hx/demo.html
融云:http://www.rongcloud.cn/downloads

  1. da shang
    donate-alipay
               donate-weixin weixinpay

发表评论↓↓