Android的后台推送原理是什么
GCM即Google Cloud Messaging,主要用于消息推送的,GCM可以让开发者在客户端和服务器之间传递消息,安卓有各家的平台的推送:Google 官方的是 GCM (Google Cloud Messaging),本文将通过以GCM为例介绍Android后台推送原理。
一、以GCM为例介绍Android后台推送原理
安卓有各家的平台的推送:Google 官方的是 GCM (Google Cloud Messaging),GCM即Google Cloud Messaging,主要用于消息推送的,即使在应用没有起来的情况下,客户端也能通过GCM收到来自服务器的消息。
GCM支持Android、IOS和Chrome。由于GCM需要google service支持,在国内基本不能用,经常会断线,不过最近项目要求,只在美国上线该项目,因此可以采用GCM实现推送的方式。GCM可以让开发者在客户端和服务器之间传递消息,有2种方式实现消息推送,一种是xmpp,它即可让服务器把消息推送给客户端,也可让客户端把消息推送给服务器,另一种方式是http,只能服务器将消息推送给客户端,以下是其架构图。
补充一点:在 IM 中最为核心的一点,就是通信协议的开发。在这方面,目前行业里有一些开源的方案如 XMPP、MQTT 等,但是,这些开源的方案对后期产品的增长,用户量级的突发式爆增是非常不利的。原因有几方面,一个是这些开源项目出现的较早,其实并没有考虑到移动互联网 2/3/4G 等复杂的网络情况,包括应对电信运营商在信令等方面的复杂设置。
另外,目前鲜有对这些开源技术软件和服务把控度比较强的技术团队,难以进行源码级的扩展和修改,出现问题也难以及时解决,以及商业化 IM 里消息的传递在过程中是否安全可控是非常核心的要求,如果使用一些标准的协议,就代表了这个东西是开放的,也就是说是有能够被破解的潜在风险,在企业服务场景里有些企业也因此而拒绝通信协议的开源。因此,包括 QQ、微信等在内的很多 IM 产品的通信协议都是自研,而弃用GMC。现在国内各大手机厂商开始做规范,出了白名单,一定程度上规避了 App 互保的现象。但需要交保护费。
二、Android的推送实现方式
- PULL:应用程序开启定时的轮询,不停地向服务器请求数据。缺点:轮询频率过高,则太过消耗性能(CPU资源、网络流量、系统电量)轮询频率低,则数据显示不及时;依托于app。
- SMS:服务器有新内容的时候发送一条类似短信的信令给客户端,客户端通过拦截sms消息做一些响应处理。优点:可实现完全的实时操作,不依赖于网络;缺点:成本相对较高,目前很难找到免费的短信发送网关来实现这种方案,只能通过运营商缴纳短信费用。
- PUSH:服务主动与客户端建立持久化连接并发送数据,当客户端和服务器建立连接后不再断开,这样服务器随时有新消息都可以发送给客户端。