App 为什么收不到推送?

OK,我们分析下这个问题

首先,要知道 Android 分为两种类型的系统机型
  • 轻度定制系统(也可称为原生态)
    • Nexus、Pixel、三星,这些严格按照 Googlle 系统规范来做定制rom的
  • 深度定制系统
    • 小米、魅族、锤子,这些是在 Google 的初版系统上修改了很多东西,比如说权限管理,通知栏样式等
推送为什么会收不到
  • 因为推送后台服务被手机Kill,服务都被干掉了,试想如何能够收到推送
导致推送被Kill掉的原因
  • 由于room被深度定制,各大厂商都有自己的权限管理,在一定时间内会被各大厂商Kill掉后台服务,尤其是内存不够用时会更快的被Kill掉;除非你的 App 被第三方厂商加入了白名单,后台服务畅通无阻,也就不存在推送收不到,例如微信
如何解决这个问题
  • 根据不同的系统集成不同的推送,小米就用小米推送,华为就用华为推送,其他厂商用第三方推送(友盟、极光、个推等),这样一来基本上没啥问题了,就是比较麻烦

  • 做一些保活方式,例如相互唤醒,内部去引导用户将 App 加入自启动列表,或者有些手机有加入『白名单』功能,在我看来除了加入白名单,其余的也只不过是增大保活率,而且其实也没啥屌用,最终都会被 Kill 掉

一个小白的一些理解,如有更好的做法或者看法欢迎讨论(=^ ^=)