推送服务浅析

阅读更多
纯个人看法,有不妥、不正确的欢迎指出,勿喷。PS:本文意不在讨论孰优孰劣,理解偏颇多多见谅。

移动互联网高速发展的今日,各类型的sns网站、app纷繁复杂,这些其实都离不开一个重要的功能pushservice。

推送,根本上而言就是内容提供商向用户传递消息的一种服务,只不过形式不一样。当年黑莓很火的时候,邮件推送服务就是其主打的特性,然而由于涉及到移动运营商的利益链推送服务受到了很大的限制。最近几年,随着移动互联网的大行其道,推送服务也得到了更多的发展,移动运营商也不得不接受了这种妥协(乔帮主居功至伟啊)。

首先谈下pushservice采用的两种实现方案,一种是长连接、一种短轮循。长连接是在用户与内容服务商之间建立一种长时间的连接,服务端一旦有新的消息立刻发送给客户端。短轮循则是用户在每个轮循周期向服务提供上发送一个内容请求,不管有没有消息都立刻返回。(当然存在其他的综合方案)

那么再谈谈当前比较主流的几种移动设备os是怎么支持推送服务的吧。

当年Symbian红火的时候,qq能后台挂起感觉很NX的样子,其实这已经是一种推送的模型。我们挂起qq,其实建立在我们手机与企鹅间的连接时没有断开的(个人感觉,即时聊天工具应当采用了长连接方式来进行消息推送,一旦服务器收到消息立刻向客户端发送这样才能尽可能的减少时间的延迟)。然而这就带来了一个问题,要支持这种方式就必须后台化的进程,这也是symbian的一大致命伤。应用在你手机里开启后台进程普通用户是很难发现的,加之symbian没有成熟的app市场无法对所有app应用进行约束,这就很难避免安全问题。(其实这一点上android在走symbian的老路了,这一点底下细谈)。

再谈谈Android,Android的出世救活了大批的移动设备厂商,然而也遭到了很多诟病。早期谷歌为了争夺市场,android走了开源合作这条路,这也给google笼络了一批特殊的用户群(设备商)。然而由于过度的开放也埋下了很多安全隐患(android的拥趸勿喷啊)。言归正传,谈谈android的推送,首先说明一点android和symbian一样是支持后台进程的(现在安卓上系统管理应用也都具备着方面的管理功能),这也间接导致了android设备上 存在着套推送服务体系。一种是谷歌内嵌在android系统中的(这个应该是android os内的服务,应用开发商通过与发送推送内容给google,再由google的推送服务统一向目标设备进行转发。用户与推送服务器间建立了一种长连接,并以此接受推送消息),另一种则是移动开发商开发的推送服务(这个原理类似于symbian平台,都需要依赖后台进程)。那么既然google提供了统一的推送服务接入,那各个移动应用开发商还费那么多力去建立自己的推送服务干嘛呢?这就牵扯到了谷歌早期的开放策略了,由于过度的开发,存在着很多的应用市场、也给开发者提供了很多便利。要接入谷歌的推送服务,必须要求应用从google应用市场中被下载,且用户必须要拥有谷歌账户(这是谷歌的补救措施)。而事实上很多用户并没有谷歌账号,而且存在如此多的应用市场,且可以下载破解应用又有多少人会去谷歌市场下载应用呢?因此,大多数的移动开发商只能选择第二种方式来自己建立推送服务。如果每个应用的推送服务都需要开启这样一个后台进程,那可想设备的待机时间将必然会受到一定程度的影响。(而不是通过一个统一的后台进程来服务所有应用,另外后台进程的存在和众多的应用市场也会导致不安全性)

再来谈谈IOS以及windowsPhone,IOS和windowsPhone都通过规避后台进程和严格的应用市场管理,迫使用户从正规的渠道下载应用,也迫使了应用开发商接入apple、ms提供的推送服务,应用开发商向推送服务器发送内容,再由他们通过系统内进程与用户建立连接发送消息内容。

一个屌丝码农告诉大家不知道到的it二三事。

你可能感兴趣的:(apns,android,google,apple,ios)