Android系统由google提供的推送的服务在国内并不能很好的运作,因此不能像 iOS能提供统一管理的推送服务。为了节约开发成本,目前主流的提供第三方推送服务的有:极光推送、个推、友盟、小米推送、百度推送。本文将整合小米、个推、jpush推送,从而提高app推送的到达率。实践发现,由于android系统的差异性,在android单独使用某一个推送并不能很好的完成推送服务。原因就是因为某些厂商的android系统安全性比较高,当完全杀死进程后,将无法收到推送服务。(例如小米、魅族)需要用户手动操作的详细列表如下:(来源:极光推送android常见问题:http://docs.jpush.cn/pages/viewpage.action?pageId=7864765)

小米【MIUI】
       自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程无法开启
       通知栏设置:应用默认都是显示通知栏通知,如果关闭,则收到通知也不会提示 华为
      【Emotion】
       自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程不会开启,只能手动开启应用
       后台应用保护:需要手动把应用加到此列表,否则设备进入睡眠后会自动杀掉应用进程,只有手动开启应用才能恢复运行
       通知管理:应用状态有三种:提示、允许、禁止。禁止应用则通知栏不会有任何提醒
       魅族【Flyme】
       自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程发开启
       通知栏推送:关闭应用通知则收到消息不会有任何展示
       VIVO【Funtouch OS】
       自启动管理:需要将应用加入“i管家”中的【自启动管理】列表,否则重启手机后进程不会自启。但强制手动杀进程,即使加了这个列表中,后续进程也无法自启动。
       内存一键清理:需要将应用加入【白名单】列表,否则系统自带的“一键加速”,会杀掉进程
       OPPO【ColorOS】
      冻结应用管理:需要将应用加入纯净后台,否则锁屏状态下无法及时收到消息
       自启动管理:将应用加入【自启动管理】列表的同时,还需要到设置-应用程序-正在运行里锁定应用进程,否则杀进程或者开机后进程不会开启,只能手动开启应用
   
       为什么需要自启动权限:因为当手机进程被杀死后,所有推送服务被关闭,同时以上厂商的手机系统禁止自动启动。第三方推送服务都会在自己的进程被杀死后企图自动打开,进而可以实现当APP被完全关闭后(关进程)仍可以接收推送。但当自启动没有打开(以上手机安装时自启动权限默认是关闭的),推送是无法到达用户的。若推送的消息仍然没有超过后台设置的保留时长(一般保留24小时),当在次打开app时将会收到延时推送。
      为了解决自启动的问题,部分厂商提供了守护进程的服务。
      
      什么是守护进程:既然我不能自启动,那第三方推送就提供一个方式,当别的APP也使用了同样的推送服务时,可以通过别的app将自己的app推送唤醒。即时自己的app被进程杀死了,同样可以收到后台推送。这时候作为开发者,就必须考虑哪个推送平台提供推送服务并且占有一定的市场比例。然而在android推送市场上,并没有一家独大的局面。因此选用某一种推送并不能确保大部分用户收到推送。
     为什么选择整合小米、个推、jpush:
      通过查阅资料:友盟、百度推送使用并不广泛。自己在实践过程中,通过查看后台进程也发现app一般使用个推、jpush的较多。
     小米的优势:从自启动列表中可以看出小米是默认禁止自启动的,并且第三方推送想通过守护进程来接收推送,实践证明:
     1:个推推送:个推在版本SDK 2.6.1.0上,在小米手机上守护进程能启动,但是启动后依然收不到推送。
     2:极光推送:极光推送从1.8.0以后也提供了守护进程(在极光文档上称为拉取进程),在小米手机上能启动,并且推送有效。然而1.8.0更新是在 2015-07-27才出来,在2015年11月通过查看后台进程会发现使用极光推送的大概只有百分之十的app开启了守护进程。
     综合考虑以上因素,当自身的app小米手机用户占到所有手机用户一定比例时,就必须使用小米推送来确保小米用户能够收到推送。小米推送可以确保不管app是否被进程杀死,都能及时收到推送服务。
个推优势:具有一定的用户群体并且提供守护进程,占用内存少。
    极光优势:1.8.0后提供守护进程,这里有一个时序的优势:就是当后台先推送消息,自身app并没有打开,打开其他有极光推送守护进程的app,也会收到推送。而个推的情况是:当后台先推送消息,自身app并没有打开,打开其他个推推送守护进程的app,收不到推送。当先打开其他守护进程的推送app,后台在进行推送消息,则极光、个推都可以收到自身app的推送消息。守护进程的对比表格如下:(测试手机是小米note和魅蓝)
  守护进程 先推送后打开守护app 先打开守护app后推送 推送服务名称 守护名称
jpush 1.8.0提供 收到 收到 PushService DaemonService(配置才守护)
个推 收不到 收到 NotificationCenter(默认守护)
小米 没有 没有守护进程 没有守护进程 XMpushService
查看守护进程:
小米手机:设置-其他应用管理-运行中
魅族手机:设置-应用管理-正在运行
     需要测试守护进程可下载宝贝玩啥app,宝贝玩啥已经整合jpush、个推的守护进程。
    由以上分析可以看出,同时整合小米、个推、jpush三个推送服务,目的是确保小米手机用户是在联网的情况下一定收的到推送,同时希望使用个推和jpush提高app在进程杀死的情况下提高收到推送的成功率。
整合方案:
整合了三个第三方推送,目的就是消息推送只能显示一条,因为后台无法判断哪个推送可以收到的消息,因而后台会把一条消息同时使用小米、个推、jpsh进行推送。所以android端要控制的就是收到三条推送,如何只显示一条,不能重复显示。
解决思路:每个第三方推送都提供推送通知和透传的方式,推送通知就是一旦android端接收到推送,就会显示出来,而透传的方式是由android端来决定收到透传消息之后的操作,因此在第三方推送初始化前,先判断是否小米手机,如果是小米手机,初始化小米推送,个推、极光不初始化,因为对于小米手机,小米推送可以确保能收到。后台选择的是推送通知的方式,通知栏的显示由后台来决定;如果不是小米手机,选择初始化极光推送和个推,提高推送的成功率。此时极光推送和个推无法确保谁的推送谁先到达,因此选择透传的方式,通过本地显示通知。当极光推送收到通知后,记录该消息的id并且显示出来,当个推收到同样id的消息时,不予显示。

总结:在早前单独使用个推时(还没有守护进程),推送的成功率只有百分之十左右,因为我也是刚在新的项目整合了三个推送,成功率的数据将在统计之后公布。欢迎留言交流。

Android极光、小米、百度、jpush等一些推送简介相关推荐

  1. 小米2s Android pie,抢先体验Android Pie 小米MIX 2s已收到推送

    原标题:抢先体验Android Pie 小米MIX 2s已收到推送 [ [IT168 手机讯]就在北京时间8月7日凌晨,谷歌推送了Android 9.0的正式版,并将其命名为"Pie&quo ...

  2. 小米2s Android pie,抢先体验 Android Pie 小米 MIX 2s 已收到推送

    [IT168 手机讯]就在北京时间 8 月 7 日凌晨,谷歌推送了 Android 9.0 的正式版,并将其命名为 "Pie",首批适配的机型包含 Pixel 以及 Essenti ...

  3. miui android 9q,小米 9 MIUI Android Q Beta 优先体验版正式推送:轻松升级

    7 月 11 日,小米 MIUI 官微宣布,小米 9 MIUI Android Q Beta 优先体验版现已推送!已获得测试资格的小伙伴已经可以升级体验. 换言之已经获得资格的小米 9 用户现在就可以 ...

  4. 小米9android q测试版,小米9 MIUI Android Q Beta优先体验版正式推送:轻松升级

    7 月 11 日,小米MIUI官微宣布,小米9 MIUI Android Q Beta优先体验版现已推送!已获得测试资格的小伙伴已经可以升级体验. 换言之已经获得资格的小米 9 用户现在就可以尝鲜下载 ...

  5. 小米9android q测试版,小米9 Android Q Beta优先体验版已推送:新增深色模式

    原标题:小米9 Android Q Beta优先体验版已推送:新增深色模式 7月12日消息,小米MIUI官方微博称,小米9的MIUI Android Q Beta优先体验版现已推送!已获得测试资格的小 ...

  6. miui android p怎么样,Android P究竟是什么,率先推送机型竟没有小米

    原标题:Android P究竟是什么,率先推送机型竟没有小米 6月21日,诺基亚7 Plus的部分用户收到了Android P Beat 2的推送,这是继索尼Xperia XZ2之后进行的新一次尝鲜版 ...

  7. java集成jpush实现客户端推送

    代码地址如下: http://www.demodashi.com/demo/13700.html 前言 java 集成jpush 实现客户端推送 ###一.准备工作 开发环境: jdk1.6 Ecli ...

  8. android推送服务不被关闭,Android APP被关闭后无法收到推送消息(尝试)

    1.   Android端进程被杀死后,目前自带的保护后台接收消息活跃机制.暂时没有什么好的机制保持任何情况下都活跃 文章参考:http://blog.csdn.net/marswin89/artic ...

  9. Android App 被关闭后无法收到推送消息

    zzz~ Android端进程被杀死后,目前自带的保护后台接收消息活跃机制.暂时没有什么好的机制保持任何情况下都活跃 文章参考:http://blog.csdn.net/marswin89/artic ...

最新文章

  1. Squid如何提高命中率
  2. jquery php 抽奖,jquery实现抽奖系统
  3. arcgis二次开发python-ArcGIS 二次开发专题 序
  4. hdu4515 小模拟
  5. MySQL学习笔记(十二)—— MySQL的命令集(2)
  6. Java 源码赏析 - java.lang - Void
  7. 百度链接提交php获取状态码,新网站,在百度提交了首页链接,但是一直没有收录,也没有爬虫抓取,怎么回事呢?(悬赏1元) - 搜外SEO问答...
  8. The package lists or status file could not be parsed or opened.
  9. 中科院30m二级分类土地利用数据Arcgis预处理及获取
  10. 数据血缘关系图 工具_QCSPCChart SPC控制图工具,QCSPCChart SPC精湛而轻松
  11. matlab图像取反_matlab图像处理
  12. flink任务常见问题
  13. 微信小程序使用Echarts 实现世界地图(其它地图同理)
  14. win10计算机亮度在哪里调,win10电脑怎么调亮度
  15. 人物-作家-马克·吐温:马克·吐温
  16. 单片机双机通信c语言,单片机双机通信(C51程序)
  17. 如何计算虚拟化vcpu_虚拟化中虚拟机处理器核数与物理主机cpu的关系
  18. Vuforia AR开发详细教程
  19. mysql drop temporary_mysql存储过程----临时表 temporary
  20. DLT645协议解析(二)---07协议数据帧结构解析

热门文章

  1. sqlmap的基本命令使用
  2. echarts——实现中国地图+世界地图的切换——技能提升
  3. VMware共享文件夹设置(ubuntu22.04)
  4. [详解] VMware vCloud云解决方案有些啥?
  5. python笛卡尔转换极坐标_[笛卡尔坐标转换极坐标]将1个公式从笛卡尔坐标转换成轴坐标...
  6. 【JAVA】-- setBorder
  7. react-native记录zIndex控制页面层次出现透过去的现象
  8. 【令牌不能为空】接口无法调用的原因分析
  9. 2021年安全员-C证报名考试及安全员-C证考试总结
  10. 采用IE内核的浏览器