服务器推送消息到Android终端方法

Andorid手机应用程序去请求一个服务器有很多种方法,HTTP,Socket,WebService等,每次请求都能返回数据,程序可以根据返回的值进行保存或者再次发起请求,想得到什么就请求什么,非常精准,也非常迅速。

可是像QQ,飞信,米聊,微信这些软件是怎么实现IM通信的呢?从网上找了一堆,大多数都不大明白怎么回事,现在我终于明白为什么招聘Android开发工程师的时候,要求有网络开发(TCP/IP、HTTP)了。

先列一下我查到的方法或者我知道的方法,也可能有重复的,求高手指正:

1、SMS短信PUSH

依靠运营商的短信接口,push命令短信到手机端。接收到短信后拦截,然后解析短信内容,根据解析到的指令,产生相应的动作,比如再去主动请求服务器,拉取数据。

优点:实时性强,不会耗电,不会耗费网络流量,只要有信号,就能用。可以说是几乎万能的了。

缺点:必须依靠比较大的运营商,而且如果很多人同时在线交流,SMS数量会非常之大。免费的短信接口不容易寻找到,支持性,兼容性较差。

2、简单轮询的方式

我的猜测:每隔一段时间主动向服务器发起请求,可以是HTTP请求。通信过程需要自己去写,最需要考虑的就是请求的频率,太慢了达不到即时的效果,太快了电池,流量和带宽都有限制。

优点:不需要依靠第三方,轻量级实现,灵活性好

缺点:频率需要权衡,功能需要自己封装。

3、Socket连接

优点:可以保持长连接,快速响应

缺点:手机端电力和流量消耗较大,服务器端连接数过多,负载过重

4、MQTT协议

这个没研究过,不过据说这个也能很好实现,服务器端如果是用PHP写的话,看起来就比较吃力了。

5、 C2DM方式

谷歌官方提供的服务

优点:官方式的服务,全面,有效

缺点:不支持2.2以下版本,不能自己建立服务器,服务器在国外,你懂得

6、XMPP协议

6.1 Openfire + asmack

6.2 androidPN Server + androidPN Client

第二个其实是第一个的第三方实现,但是如果自己做,还是推荐用第一种方式

未完待续。。。

  • 标签:
分类:Android
点赞: 0

1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  • © 2011 知研片语
  • 京ICP备16042882号