青柠檬檬哒|聊聊手机上信息推送的那些事儿

除了微信等即时通讯类应用之外 , 我把其他的应用的通知功能都关了 。
这是我看到过的比较极端的对于手机通知功能的态度 , 并且曾经我也是这么想这么做的 。 在我刚开始从功能手机或者诺基亚智能手机转到安卓智能手机的时候 , 我非常固化地认为手机只要保持即时通讯类应用以及短信电话的通知就已经足够了 , 其他的不管是什么 , 对于我的生活似乎都是一种打扰 。 因为我觉得不关心的我不需要 , 我关心的我会主动去看 。
青柠檬檬哒|聊聊手机上信息推送的那些事儿图片来自taplytics
并且 , 在Android操作系统当中 , 由于缺少GCM服务或者是因为安卓操作系统的开放特性 , 许多应用需要开发一个单独常驻后台的进程来获得应用推送 。 对于这一点 , 早年间带来的一个大问题就是影响系统的流畅性 , 同时增加功耗 。 对此 , 相信有不少不懂的朋友甚至会抱怨 , 究竟是谁发明了这么个叫做推送的功能 。
一对于Android操作系统的话 , 谷歌在2009年10月份推出的2.2版本更新当中加入 Android Cloud to Device Messaging(C2DM)服务 , 启用了Push Notifications功能 , 也就是我们日常所说的推送 。 iOS的推送功能做得稍微早一点 , 在2008年推出的当时还叫iPhone OS的2.0版本当中 , 随着App Store一起推出 。
青柠檬檬哒|聊聊手机上信息推送的那些事儿图片来自维基百科
这种主动推送的机制 , 从本质上改变了大家使用手机的习惯 。
早年使用功能手机的时候 , 在推送机制推出之前 , 除了短信、电话之外 , 我们需要把应用开启到前台 , 才能够及时的收取到信息以及进行回复 。 比如说当年的QQ , 我们需要把QQ应用常驻在前台 , 来保证信息的及时收取 。 对此 , 我当年可是每个月花10块钱来开通超级QQ服务的 , 一个是因为那个小金标能够满足自己的虚荣心 , 另一个就是开通服务之后 , 能够及时地通过短信收取到自己关注的人的上线消息 , 以及收到QQ消息之后还能够通过短信回复 。 在高中时代 , 虽然同班的女生当中没有一个叫沈佳宜的 , 但是哪个90后还没有一个终将逝去的青春年少 , 对吧 。
青柠檬檬哒|聊聊手机上信息推送的那些事儿是的 , 当年对于许多人来说 , 能够及时收到QQ消息是需要付费的 。 这种付费机制 , 相当于给了那部分当初不能一下子拿出几千块钱买部运行Symbian系统的诺基亚手机、同时又需要为大量流量费用付费的朋友一个分期的机会 。
而推送服务的推出 , 则是从根本上满足了大家对于信息及时获取的需求 。 我们不再需要启动应用来获取新的消息 , 消息会主动从云端服务器推送给我们 。
二以iOS的APNs为例 , 我们大概说说推送服务的使用流程 。 首先是应用程序注册消息推送 , 然后iOS 向APNs Server 取得deviceToken , 应用程序接受deviceToken , 接着应用程序将deviceToken发送给PUSH服务端程序 , 服务端程序向APNs服务发送消息 , 最后APNs服务将消息发送给iPhone应用程序 。
其他的推送服务使用流程大概类似 。
理想的情况下 , 我们在智能手机上使用的推送服务应该是这样的 , 比如说黑莓、苹果的智能手机 , 服务器定向将信息实时送达手机 。 但是 , 国内情况的安卓手机的使用情况就复杂得多 , 也就出现了部分应用通过常驻后台通过轮询的方式(伪推送)向服务器获取消息 。 对于两种获取信息的方式 , 虽然最终的效果看起来是一样的 , 就是信息能够很快并且主动推送到我们的手机 。 但是 , 推送服务是长联网的 , 一般到达手机的延迟在0.1-0.5秒左右(基本就是实时到达) , 而轮询方式(伪推送)不是长联网的 , 达到延迟时间则根据轮询时间的不同为1-10分钟 , 也有延迟1小时或一天的情况 。