从零开始学android
Android消息推送模式分为两种,一种pull和一种push:
所谓pull就是客户端做论询,定期从服务端指定接口获取数据,耗电,耗内存,当然不需要考虑了。
而push就是目前较主流的,服务端主动推数据到客户端(本来GOOGLE也提供了Cloud to Device Messaging ,但是已经被停掉了,目前无法使用,否则,我们也不必费尽心思来实现了。而IOS程序只能通过APNS(Apple Push Notification)来实现,简单多了)
在网上搜索了一番之后,大概也就以下几种
1.采用XMPP协议实现Android推送
目前已知的开源项目有AndroidPn (Android Push Notification)一位韩国人的开源程序,最近很少更新了。文档又是韩文的。不易理解。当然还有其它更深层次的问题,有兴趣的可以研究下。.
2.MQTT(IBM的一套轻量订阅)
MQTT是一项消息传递技术,由IBM再2001年发布。
总结一下,机制就是使用一个代理服务器message broker,
客户端client连接上这个服务器,然后告诉服务器说,我可以接收哪些类型的消息,
同时,client也可以发布自己的消息,这些消息根据协议的内容,可以被其他client获取。
只要手机客户端,连上服务器,然后就可以接收和发布消息了,不用自己写socket什么了.
IBM已经推出了MQTT V3.1版本,已经加入了安全验证机制.
据国外网友说,facebook在2011年8月就是用的mqtt v3.1
3.第三方云服务
现已知有如下几种,不一定全面。有百度云推送,华为推送,个推,极光推送等等 对于测试或小开发者目前都是不收费的,大家可以测试比较下。本人用了百度云推送,感觉效果还可以,毕竟我的程序对并没有多少用户,要求不大。大家可以参考下,(不是为百度做广告啊,几家应该都差不多的。)最后总结一下,每个人的手机上都会安装很多的程序,而推送已成为大多数应用程序的基本功能。如果每个程序实现推送的机制各不一样,各自开着一个线程,这对手机耗电量来说真是一个越来越严重的问题。在不能寄希望于Google官方的C2DM服务的情况下,未来如果出现几个较大的第三方推送服务,并且每一家的服务只开启一个线程的话,对广大用户来说,也是一件好事。