android上消息推送的实现

来源:互联网 发布:怎么改淘宝手机号 编辑:程序博客网 时间:2024/04/30 10:17

ios上面有了很好的推送机制,android上本来也有个类似iphone上的APNS,原名Android Cloud to Device Messaging,小名C2DM,(C2DM) 作为 Android 2.2 的一部分已经发布了,C2DM 允许第三方开发者开发相关的应用来推送1024字节到用户的手机上,这相对于ios的256字节来说,简直爽歪歪了。但是悲剧发生了,C2DM这项云推机制的服务器假设在国外,对我们来说几乎不可用。

既然谷歌提供的服务被挤出去了,但是国内千千万的程序猿们在开发中又要用,肿么办呢?这时候,无数的勇士们站出来自己写推送服务。相信大家也看到过很多相关文章。我再罗嗦目前几种第三方提供的推送方法。以下为粘贴做个总结,一起学习。

方案一:

  Google官方的:

  通过对比研究发现C2DM机制存在以下缺点:

  1、C2DM内置于Android的2.2系统上,无法兼容老的1.6到2.1系统;

  2、必须运行android,并且安装Market,至少有一个登录的google账号。

  3、C2DM需要依赖于Google官方提供的C2DM服务器,由于国内的网络环境,这个服务经常不可用,是消息阻塞,不能对送到终端。

跟大家说声sorry,很久没关注这个了,今天特来编辑一下文章。googel在今年6月26日C2DM已被正式的GCM取代而不再使用。关于GCM的代码,可以参考

(http://developer.android.com/intl/zh-CN/guide/google/gcm/index.html)
(https://developers.google.com/android/c2dm/index#example)


 

方案二:
  利用MQTT协议,broker做代理服务器,但是随着用户的增多这个方案会有问题,因为broker的连接数有上限,到了一定程度后就无法连接了,这也就导致消息很难发送
  总之,连接数量有限制。
方案三:(参考如下两篇博客http://www.cnblogs.com/hanyonglu/archive/2012/03/16/2399655.html  http://www.apkbus.com/android-18168-1-1.html)
  基于XMPP协议,很多人都建议使用这个,谷歌官方的C2DM也是基于XMPP研发的,使用这个方案不会依赖android系统,也不依赖于谷歌服务器。
方案四:(http://push-notification.org/)
  最近新出的一种是APNS,这个也不需要自己架设服务器,很简单,自己不用开发服务端,但要收费的,一年199人民币。帮他宣传可以得到3个月的延长使用。
  主要有以下特点:
  · 快速集成:提供一种比C2DM更加快捷的使用方式,避免各种限制.
  · 无需架设服务器:通过使用"云服务",减少额外服务器负担.
  · 可以同时推送消息到网站页面,android 手机
  · 耗电少,占用流量少
方案五:(http://www.android-push.com)
  下面的一种方案是我自己发现的一种方案感觉比较好用,所以推荐给大家。(android-push终极方案)
  先介绍特点:
  1、免费
  2、易集成
  3、没有C2DM中的版本限制和必须用gmail绑定
  4、云服务,不用假设自己的服务器
  5、用户track
  6、简单高效,并且省电
 
吐槽:
第四种方法我试用了一段时间,后来发现在断网重新连接的时候,服务没有启动,不太稳定,真正等软件商用的时候就来不及修改了,特别是对实时性要求较高的软件。
第五种方法呢,看着就很专业了,在美国旧金山和北京苏州街都有研发点。嵌入代码也很easy,有demo很文档。我们点方案五后面的网址进去看看就一目了然了。只要添加一个应用的包名,换取key和sectret,还有,通过代码抓取手机终端的IMEI号。。有了这三个参数之后,推送起来轻松加愉快!
 
文章再次编辑一下:
后来用了一段时间,发现只要是第三方公司开发的APNS都存在一个问题,他们全部用了一个三方包,所以在网络切换到时候,服务就断开了,再推送消息,已经下不来了,多多少少有些不稳定。这个问题,我还可以打电话问了他们开发的技术人员。俺们终日盼着google能像苹果那样,放个apns的服务器,造福全球android用户啊。此问题一日不解决,我们一日受罪啊。现在我们公司做的推送,直接用tcp做长连接,我和我哥们一起干的,老实说,维持这个链接真的很费神。
原创粉丝点击