博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android远程推送笔记
阅读量:4121 次
发布时间:2019-05-25

本文共 921 字,大约阅读时间需要 3 分钟。

Android远程推送笔记

Android推送有很多种实现方案,但都没办法和苹果的APNS比拟,这里主要来讲述一下我遇到的问题,和作出的抉择。

首先,为了快速接入,所以就没有自己搭建推送服务器,而是使用了第三方sdk。目前第三方推送已经有很多了,如果要自己搭建推送服务,而不使用第三方sdk,可以参考一下这篇博文 讲的非常的详细。

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

对于这个问题,我也问过第三方sdk的技术,他们大都用了两种方式:

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

当然,对于推送服务被杀掉这个问题还有其它办法,那就是使用系统级的service。比如在小米的系统使用小米推送,三星的系统使用三星推送,华为的使用华为推送,使用前要先查看他们的官方文档,他们的推送服务是否系统级的(一般都是)。比如小米推送官网上明确注明:小米推送服务支持所有Android平台,在MIUI上属于系统服务框架,共享系统级长连接。

使用这种方式,工作量会很大,且不可能覆盖所有用户,像一些用户少的山寨机你也不可能去做吧,一般就做几家用户多的,比如小米、三星、华为。。。


转载地址:http://bhtpi.baihongyu.com/

你可能感兴趣的文章
Container With Most Water --装最多水的容器(重)
查看>>
Longest Common Prefix -最长公共前缀
查看>>
Letter Combinations of a Phone Number
查看>>
Single Number II --出现一次的数(重)
查看>>
Valid Parentheses --括号匹配
查看>>
Remove Element--原地移除重复元素
查看>>
Remove Duplicates from Sorted Array--从有序数组中移除重复元素
查看>>
Count and Say
查看>>
Gas Station
查看>>
Palindrome Partitioning --回文切割 深搜(重重)
查看>>
Valid Palindrome 简单的回文判断
查看>>
Pascal's Triangle -- 生成杨辉三角
查看>>
Pascal's Triangle II 生成杨辉三角中的某行
查看>>
Minimum Depth of Binary Tree -- 二叉树的最小深度 DFS 加剪枝
查看>>
Climbing Stairs 爬楼梯方法 动态规划
查看>>
Merge Two Sorted Lists 合并两个有序链表
查看>>
pow(x,n) 为什么错这么多次
查看>>
Jump Game 动态规划
查看>>
Binary Tree Maximum Path Sum 自底向上求解(重重重重)
查看>>
Subsets 深搜
查看>>