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的消息时,不予显示。
总结:在早前单独使用个推时(还没有守护进程),推送的成功率只有百分之十左右,因为我也是刚在新的项目整合了三个推送,成功率的数据将在统计之后公布。欢迎留言交流。
ps:最近新公司又使用友盟推送,因此把友盟v3.0.1版本做了对比

android整合小米、个推、jpush推送相关推荐

  1. 微信最新版本android miui,小米MIUI更新,推送Android 11版系统、4个版本用户可以升级...

    目前,小米MIUI系统又迎来了更新,本次更新的版本号已经是MIUI 20.7.28,这个版本除了两款机型,其余还在内测的机型都是可以升级的,但是也是有前提,另外小米10系列的两款手机又将获得基于And ...

  2. android极光静默推送,Android 推送 整合小米、个推、jpush

    Android系统由google提供的推送的服务在国内并不能很好的运作,因此不能像iOS能提供统一管理的推送服务.Android端推送目前常用的都是第三方推送服务,也可以自己搭建推送服务器来实现, 为 ...

  3. Android 推送 整合小米、个推、jpush

    Android系统由google提供的推送的服务在国内并不能很好的运作,因此不能像iOS能提供统一管理的推送服务.Android端推送目前常用的都是第三方推送服务,也可以自己搭建推送服务器来实现, 为 ...

  4. Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

    Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...

  5. 友盟小米收不到推送消息_一个轻量级、可插拔的Android消息推送框架。一键集成推送(极光推送、友盟推送、华为、小米推送等)...

    XPush 一个轻量级.可插拔的Android消息推送框架.一键集成推送(极光推送.友盟推送.华为.小米推送等),提供有效的保活机制,支持推送的拓展,充分解耦推送和业务逻辑,解放你的双手! 在提iss ...

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

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

  7. 小米max2 android p,小米max2 升级miui11全程跟进推送

    我max2表示没收到MIUI11更新要不是电池大,早扔啦!卡成狗,反应迟钝,黑屏,自退,电池大--我小米Max2为什么没有推送更新?关键是底层!小米MAX2miui10底层还是安卓7.1,说白了就是换 ...

  8. android 杀死程序收不到推送_Android APP切换到后台接收不到推送消息

    1.   Android端进程被杀死后,目前自带的保护后台接收消息活跃机制.暂时没有什么好的机制保持任何情况下都活跃 android原生系统用home键杀进程可以起来,如果是强行停止就只能用户自己手动 ...

  9. Android开发之使用观察者模式结合推送实现订单自动刷新

    老套路:先上效果图:请看第二个订单状态 说下思路:订单状态改变是后台改变了,然后通过三方推送订单数据到手机,手机端通过拿到推送的数据进行自动刷新订单状态,这里面用到了Java设计模式中的:观察者模式. ...

最新文章

  1. php3d按钮,CSS实现3D按钮效果
  2. Android-使用AIDL进程间通信
  3. iphone有什么软件可以修改html,现在iPhone组装机太可怕,修改数据即可变原装?...
  4. get和post有什么区别
  5. Latex设置字体大小
  6. 职业学校计算机主要学什么条件,职业学校计算机教学计划
  7. syslog(),openlog(),closelog()
  8. 如何让网页中文本框的内容只能读不能写
  9. 设计模式-01-设计模式简介及分类
  10. Hive中除了窗口函数外的常用函数:casewhen,行转列,列转行
  11. android tf卡 修复工具,sd卡修复工具大师
  12. 无法删除文件无法读源文件或磁盘的解决办法
  13. Eclipse常用插件推荐
  14. “女人~,你在玩火”一个有磁性的声音说道——常用自动化测试工具
  15. Android签名证书的生成
  16. Linux服务器CPU使用率过高
  17. OpenCV-Python图像形态变换概述及morphologyEx函数介绍
  18. DOS上登陆FTP的命令和步骤(ftp命令全集)
  19. 字符串为null 和 字符串长度为0
  20. CLO如何在其软件结构中集成V-RAY

热门文章

  1. Explicit Initialization
  2. error LNK1103 问题
  3. 利用Python requests库模拟登陆学校教务系统
  4. 数据结构学习——树与二叉树的转换
  5. jsp的萌新使用教程
  6. MySQL安装教程及相关问题解答!!!!!!
  7. 【2022】Java基础面试真题
  8. 轻微课魔鬼特训班学员自述零基础学画画蜕变之路
  9. 江南愤青关于对互联网金融的一点看法
  10. Photoshop调整图像色彩