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上属于系统服务框架,共享系统级长连接。
使用这种方式,工作量会很大,且不可能覆盖所有用户,像一些用户少的山寨机你也不可能去做吧,一般就做几家用户多的,比如小米、三星、华为。。。

Android远程推送笔记的更多相关文章

  1. IOS JPush 集成步骤(极光远程推送解决方案,支持android和iOS两个平台)

    ●  什么是JPush ●  一套远程推送解决方案,支持android和iOS两个平台 ●  它能够快捷地为iOS App增加推送功能,减少集成APNs需要的工作量.开发复杂 度 ●  更多的信息,可 ...

  2. iOS开发笔记10:圆点缩放动画、强制更新、远程推送加语音提醒及UIView截屏

    1.使用CAReplicatorLayer制作等待动画 CALayer+CABasicAnimation可以制作很多简单的动画效果,之前的博客中介绍的“两个动画”,一个是利用一张渐变色图片+CABas ...

  3. ios远程推送和python版push server相关笔记

    今天研究了下ios的远程推送,网上的相关教程很多,做了一遍下来记录一下遇到的问题和注意事项(转载请注明) 1.证书及乱七八糟的配置 公钥:app id管理那儿的“Development Push SS ...

  4. iOS本地推送与远程推送

    原文在此 分为本地推送和远程推送2种.可以在应用没有打开甚至手机锁屏情况下给用户以提示.它们都需要注册,注册后系统会弹出提示框(如下图)提示用户是否同意,如果同意则正常使用:如果用户不同意则下次打开程 ...

  5. iOS远程推送1

    一.APNS 远程推送 1.所有的苹果设备,在联网状态下,都会与苹果服务器建立长连接. 2.长连接:就是只要联网了,就一直建立连接. 3.长连接的作用:时间校准,系统升级,查找我的iPhone. 4. ...

  6. Android消息推送完美方案[转]

    转自 Android消息推送完美方案 推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折.本文就是用来 ...

  7. Android消息推送完美方案

    转自:http://bbs.hiapk.com/thread-4652657-1-1.html 推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原 ...

  8. Android消息推送完美解决方案全析

    推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折.本文就是用来和大家共同探讨一种Android消息推 ...

  9. iOS本地推送与远程推送详解

    一.简介 分为本地推送和远程推送2种.可以在应用没有打开甚至手机锁屏情况下给用户以提示.它们都需要注册,注册后系统会弹出提示框(如下图)提示用户是否同意,如果同意则正常使用:如果用户不同意则下次打开程 ...

随机推荐

  1. 博客改用markdown编写啦!

    如题,在某谷上交了一篇题解之后,顿时觉得\(markdown\)非常好看.

  2. 转:git 的常用命令

    转自:阮一峰 常用git命令清单 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Wor ...

  3. SqlMapConfig.xml配置文件

    SqlMapConfig.xml中配置的内容和顺序如下: 1.1 properties(属性) mybatis的属性加载顺序.读取顺序:properties------>resource或url ...

  4. ECMAScript6 Generator & async

    Generator Generator函数是一个状态机,执行后返回一个遍历器对象.调用遍历器对象的.next()函数获取下一个状态. Generator是一个普通的函数,函数内部使用yield关键字定 ...

  5. APICloud的App怎么在手机上测试运行

    方式一: 工程->右键->云编译自定义 AppLoader,如图: 点击[编译iOS自定义loader]或者[编译Android自定义loader],会生成相应的二维码,手机扫描二维码点击 ...

  6. javascript-数字转罗马数字

    阿拉伯数字与罗马数字转换 罗马数字表示 XXI, 21 个位数举例I, 1 ]II, 2] III, 3] IV, 4 ]V, 5 ]VI, 6] VII, 7] VIII,8 ]IX, 9 ·十位数 ...

  7. supervisord常见问题

    第一种: 你在没有修改配置文件之前就已经启动:~supervisord -c supervisord.conf 然后又去修改配置文件,想重新读取一下但是却出现了以下报错: Another progra ...

  8. HTML5学习总结——相关练习与项目

    一.小米商城项目 第一天示例代码: <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  9. qsort()与sort的用法(收藏)

    sort()函数是C++中的排序函数其头文件为:#include<algorithm>头文件: qsort()是C中的排序函数,其头文件为:#include<stdlib.h> ...

  10. servelet跳转页面的路径中一直包含sevelet的解决办法

    解决办法1: 在web.xml配置文件中修改: <servlet-mapping> <servlet-name>LoginServelet</servlet-name&g ...