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. 对HandlerExecutionChain类的理解分析

    HandlerExecutionChain类比较简单,好理解. ==================================================================== ...

  2. BZOJ1396:识别子串(SAM)

    Description Input 一行,一个由小写字母组成的字符串S,长度不超过10^5 Output L行,每行一个整数,第i行的数据表示关于S的第i个元素的最短识别子串有多长. Sample I ...

  3. TCP/IP模型 & 5层参考模型

    OSl参考模型与TCP/IP参考模型相同点: 1.都分层 2.基于独立的协议栈的概念 3.可以实现异构网络互联

  4. Vue中引入jquery方法 vue-cli webpack 引入jquery

    在vue-cli 生成的工程中引入了jquery(模板用的webpack) 首先在package.json里的dependencies加入"jquery" : "^2.2 ...

  5. @RequestParam和@PathVariable的区别及其应用场景

    @RequestParam和@PathVariable这两者之间区别不大,主要是请求的URL不一样 用@RequestParam请求接口时,URL是:http://www.test.com/user/ ...

  6. Charles Proxy v4.1.3 Mac、Win64、Win32破解版

    http://charles.iiilab.com/ 1. 下载Charles Proxy 4.1.3版本,百度云盘下载 或 去官网下载 2. 安装后先打开Charles一次(Windows版可以忽略 ...

  7. JasperReport4.6生成PDF中文

    Web项目中PDF显示中文 本人无奈使用JasperReport4.6,因为这本书(好像也是唯一的一本国内的介绍JasperReport的书), 选择"文件"→New命令,弹出一个 ...

  8. python 基于udp 连接

    #udp 服务端 #导入socket模块 from socket import * #ip加端口 类型为元组 ip_port=('127.0.0.1',8002) #最大接收字节 buffer_siz ...

  9. Spark集群新增节点方法

    Spark集群处理能力不足需要扩容,如何在现有spark集群中新增新节点?本文以一个实例介绍如何给Spark集群新增一个节点. 1. 集群环境 现有Spark集群包括3台机器,用户名都是cdahdp, ...

  10. git获取步骤

    $ git init $ git config --global user.name "[name]" $ git config --global user.email [emai ...