推送的本质

App将服务器更新的信息推送给用户,即App获取服务器信息,再推送给用户

Android的推送实现方式

  1. PULL
    应用程序开启定时的轮询,不停地向服务器请求数据
    缺点:
    a. 轮询频率过高,则太过消耗性能(CPU资源、网络流量、系统电量)轮询频率低,则数据显示不及时
    b. 依托于app
  2. SMS
    服务器有新内容的时候发送一条类似短信的信令给客户端,客户端通过拦截sms消息做一些响应处理
    优点:可实现完全的实时操作,不依赖于网络
    缺点:成本相对较高,目前很难找到免费的短信发送网关来实现这种方案,只能通过运营商缴纳短信费用

推必达就是基于信令通道的电信级推送服务,可以实现在无数据网络、无wifi的情况下,实现消息传输,且无需开发者添加sdk,不过目前还没有到商用阶段
Android推送原理

  1. PUSH
    服务主动与客户端建立持久化连接并发送数据,当客户端和服务器建立连接后不再断开,这样服务器随时有新消息都可以发送给客户端

推送的解决方案

由于目前为止还未出现基于SMS可商用的推送方案,所以对比pull和push方式,明显push的方式在满足需求的情况下更省资源(CUP、网络流量、系统电量),所以以下都是基于push的方式提出的解决方案

  1. FCM(Firebase Cloud Messaging)
    Android系统级别的消息推送服务-Google出品,它的原理与 Apple 推送通知服务类似,消息从应用服务器被发送到统一服务器,然后发送到设备。
    优点:简单、轻量级的机制,属于系统级别不易杀死,没有消息配额限制、更好的节省电量
    缺点:由于 Google 服务在大陆地区的使用很不稳定,国行 Android 手机往往会为了更好的用户体验而精简掉 Google 服务,统一推送服务也同时被去除。

Android 官方推送服务:从 C2DM 到 FCM
2010 年,在 Apple 推送通知服务发布后没多久,Android 2.2 上便推出了「云端至设备消息传递(Cloud to Device Messaging,即 C2DM)」,它的原理与 Apple 推送通知服务类似,消息从应用服务器被发送到统一服务器,然后发送到设备。
这一服务在 2012 年被「Google 云消息传递(Google Cloud Messaging,即 GCM)」替代。相比 C2DM,GCM 的 主要优点 是没有消息配额限制,且对于开发者更友好,同时能更好地节省电量。
2014 年 Google 收购 Firebase 后,将 GCM 改名为「Firebase 云消息传递(Firebase Cloud Messaging,即 FCM) 」,并 进一步简化了推送服务的相关开发工作。

C2DM推送的流程图
Android推送原理

  1. 第三方平台
    如今主流的推送方式
    主流平台:友盟推送、个推、极光推送、信鸽推送、阿里云推送、百度推送等
    厂商平台:华为推送、小米推送、vivo推送、oppo推送、魅族推送等
    优点:
    a. 成本低,目前市面上大部分的推送是免费的
    b. 消息到达率高,如果一个手机里有多个App使用了同一家推送服务,那么这些App将共用一条消息通道,即使你家的App推送服务被杀死了,那么只要用户打开了其他集成该推送服务的App,你家的推送就能到达用户
    缺点:
    a. 安全性低,别人的服务器
    b. 服务会被杀死,由于Android系统的机制,后台推送Service会被各种主动的或是被动的行为给杀死,而服务一旦被杀死就意味着收不到消息了

    针对缺点b而言,手机厂商的推送不存在这种情况,目前大部分厂商都是对系统都是高度定制,目的为了提供更人性化的服务或者更适合自家的硬件,那么推送服务也是,所以请记住一个潜规则:操作系统是不会杀死属于自己品牌的推送服务的

相关文章: