Android远程推送笔记

Android远程推送笔记

Android推送有很多种实现方案,但都没办法和苹果的APNS比拟,这里主要来讲述一下我遇到的问题,和作出的抉择。
首先,为了快速接入,所以就没有自己搭建推送服务器,而是使用了第三方sdk。目前第三方推送已经有很多了,如果要自己搭建推送服务,而不使用第三方sdk,可以参考一下这篇博文 http://www.cnblogs.com/hanyonglu/archive/2012/03/04/2378971.html 讲的非常的详细。

无论自己写,还是用第三方推送服务, Android 上都会遇到一个问题,那就是进程被杀掉之后是无法收到推送的。如果仅仅是应用退出了,客户端注册的推送服务还在后台运行着,接受到推送时没问题的,但如果通过应用列表杀掉进程,运行的系统后台的推送服务也会被杀掉。那么就接收不到服务器的推送了。

对于这个问题,我也问过第三方sdk的技术,他们大都用了两种方式:
1.在推送sdk中加入了守护进程,但是由于系统不同,有的拉起需要时间,具体时间是多少就不知道了。我用 三星Note3 简单测试了一下,大概用隔了40多分钟!
2.长连接互保,多个APP合并一条长连接,共享链路。简单来说就是应用A,B,C,D都接了某推送的sdk,只要其中一个应用在后台的推送服务没有被杀掉,那么其他应用就能正常收到推送。其实就是在接sdk的时候,文档会要求你注册service和broadcast,一个用于接收服务器发出的推送,然后广播出去,一个用于接受广播,只要有一个接过该推送sdk的应用,它的推送service在后台运行着,那么其它应用就能通过它发出的广播被激活。所以,接第三方sdk时,一定要选择使用者最多的。
下面这个链接是一个推送sdk的比较,可以参考一下:http://jingyan.baidu.com/article/d621e8da0fd7042865913ff5.html

当然,对于推送服务被杀掉这个问题还有其它办法,那就是使用系统级的service。比如在小米的系统使用小米推送,三星的系统使用三星推送,华为的使用华为推送,使用前要先查看他们的官方文档,他们的推送服务是否系统级的(一般都是)。比如小米推送官网上明确注明:小米推送服务支持所有Android平台,在MIUI上属于系统服务框架,共享系统级长连接。
使用这种方式,工作量会很大,且不可能覆盖所有用户,像一些用户少的山寨机你也不可能去做吧,一般就做几家用户多的,比如小米、三星、华为。。。

上一篇:lintcode 中等题:N Queens II N皇后问题 II


下一篇:使用java程序模拟页面发送http的post请求