Android远程推送笔记
2015-12-15 13:56
197 查看
Android远程推送笔记
Android推送有很多种实现方案,但都没办法和苹果的APNS比拟,这里主要来讲述一下我遇到的问题,和作出的抉择。首先,为了快速接入,所以就没有自己搭建推送服务器,而是使用了第三方sdk。目前第三方推送已经有很多了,如果要自己搭建推送服务,而不使用第三方sdk,可以参考一下这篇博文 http://www.cnblogs.com/hanyonglu/archive/2012/03/04/2378971.html 讲的非常的详细。
无论自己写,还是用第三方推送服务, Android 上都会遇到一个问题,那就是进程被杀掉之后是无法收到推送的。如果仅仅是应用退出了,客户端注册的推送服务还在后台运行着,接受到推送时没问题的,但如果通过应用列表杀掉进程,运行的系统后台的推送服务也会被杀掉。那么就接收不到服务器的推送了。
对于这个问题,我也问过第三方sdk的技术,他们大都用了两种方式:
在推送sdk中加入了守护进程,但是由于系统不同,有的拉起需要时间,具体时间是多少就不知道了。我用 三星Note3 简单测试了一下,大概用隔了40多分钟!
长连接互保,多个APP合并一条长连接,共享链路。简单来说就是应用A,B,C,D都接了某推送的sdk,只要其中一个应用在后台的推送服务没有被杀掉,那么其他应用就能正常收到推送。其实就是在接sdk的时候,文档会要求你注册service和broadcast,一个用于接收服务器发出的推送,然后广播出去,一个用于接受广播,只要有一个接过该推送sdk的应用,它的推送service在后台运行着,那么其它应用就能通过它发出的广播被激活。所以,接第三方sdk时,一定要选择使用者最多的。
下面这个链接是一个推送sdk的比较,可以参考一下:http://jingyan.baidu.com/article/d621e8da0fd7042865913ff5.html
当然,对于推送服务被杀掉这个问题还有其它办法,那就是使用系统级的service。比如在小米的系统使用小米推送,三星的系统使用三星推送,华为的使用华为推送,使用前要先查看他们的官方文档,他们的推送服务是否系统级的(一般都是)。比如小米推送官网上明确注明:小米推送服务支持所有Android平台,在MIUI上属于系统服务框架,共享系统级长连接。
使用这种方式,工作量会很大,且不可能覆盖所有用户,像一些用户少的山寨机你也不可能去做吧,一般就做几家用户多的,比如小米、三星、华为。。。
相关文章推荐
- 【转】 Pro Android学习笔记(九五):AsyncTask(4):执行情况
- 【转】 Pro Android学习笔记(九四):AsyncTask(3):ProgressDialog
- 【转】 Pro Android学习笔记(九三):AsyncTask(2):小例子
- 【转】 Pro Android学习笔记(九二):AsyncTask(1):AsyncTask类
- 分享一种最简单的Android打渠道包的方法
- 【转】 Pro Android学习笔记(九一):了解Handler(5):组件生命
- 【转】 Pro Android学习笔记(九十):了解Handler(4):Worker线程
- 【转】 Pro Android学习笔记(八九):了解Handler(3):延迟执行小例子
- 【转】 Pro Android学习笔记(八八):了解Handler(2):什么是Handler
- 【转】 Pro Android学习笔记(八七):了解Handler(1):组件和线程
- 【转】 Pro Android学习笔记(八六):了解Package(5):使用lib
- 百度地图 Android SDK - 标注(Marker)的基本使用
- 【转】 Pro Android学习笔记(八五):了解Package(4):lib项目
- 【转】 Pro Android学习笔记(八四):了解Package(3):包间数据共享
- 【转】 Pro Android学习笔记(八三):了解Package(2):包签名过程
- 【转】 Pro Android学习笔记(八二):了解Package(1):包和进程
- 【转】 Pro Android学习笔记(八一):服务(6):复杂数据Parcel
- 【转】 Pro Android学习笔记(八十):服务(5):访问远程服务
- Android draw、onDraw、dispatchDraw、invalidate、computeScroll 一些简要说明
- 【转】 Pro Android学习笔记(七九):服务(4):远程服务的实现