智游推送CTO浅谈推送服务
推送,根本上而言就是内容提供商向用户传递消息的一种服务,推送的作用在于主动提醒用户,不需要主动刷新程序或者网页去检查更新,比如Android的sina微博,必须手动刷新程序才能更新微博或者查看好友申请。这种做法可以节省流量,对于手机包月用户而言非常有必要的。用户专注于当前任务时,可以接收到其他应用程序推送的消息,用户可以及时处理多任务。
首先谈下pushservice采用的两种实现方案,一种是长连接、一种短轮循。长连接是在用户与内容服务商之间建立一种长时间的连接,服务端一旦有新的消息立刻发送给客户端,好处在于有消息时由服务器告知手机客户端。手机此时再发起更新,省电省流量,所以智能手机平台都会有推送服务。短轮循则是用户在每个轮循周期向服务提供上发送一个内容请求,不管有没有消息都立刻返回(当然存在其他的综合方案)。
谈谈Android的推送,首先说明一点Android和Symbian一样是支持后台进程的(现在安卓上系统管理应用也都具备着方面的管理功能),这也间接导致了Android设备上 存在着多套推送服务体系。一种是谷歌内嵌在Android系统中的(这个应该是Android os内的服务,应用开发商通过与发送推送内容给Google,再由Google的推送服务统一向目标设备进行转发。用户与推送服务器间建立了一种长连接,并以此接受推送消息),另一种则是移动开发商开发的推送服务(这个原理类似于Symbian平台,都需要依赖后台进程)。那么既然Google提供了统一的推送服务接入,那各个移动应用开发商还费那么多力去建立自己的推送服务干嘛呢?这就牵扯到了谷歌早期的开放策略了,由于过度的开发,存在着很多的应用市场、也给开发者提供了很多便利。要接入谷歌的推送服务,必须要求应用从Google应用市场中被下载,且用户必须要拥有谷歌账户 。
而事实上很多用户并没有谷歌账号,而且存在如此多的应用市场,且可以下载破解应用又有多少人会去谷歌市场下载应用呢?
再来谈谈iOS以及Windows Phone。iOS和Windows Phone都通过规避后台进程和严格的应用市场管理,迫使用户从正规的渠道下载应用,也迫使了应用开发商接入Apple、MS提供的推送服务,应用开发商向推送服务器发送内容,再由他们通过系统内进程与用户建立连接发送消息内容。