前段时间,在工信部的牵头下,成立了“统一推送联盟”。该联盟将联合多家安卓手机厂商、互联网公司及其他相关企业,打造面向安卓平台的统一推送服务UnifiedPushService(UPS),有望遏制国内安卓生态系统的各种乱象。对于中国广大安卓用户来说,这是一个振奋人心的好消息。如果一切顺利,在不久的将来,即使是低端的安卓手机,也能依靠这种统一推送服务获得相当不错的体验。借此机会,我给大家简单介绍一下Android推送服务的前世今生。苹果的推送通知服务在介绍安卓推送之前,先说说隔壁苹果推送服务的消息统一推送。许多人选择iPhone而不是Android手机。一个很大的原因是他们认为iOS系统更流畅,用久了也不会卡顿(当然最近有消息说iOS会降低手机的性能来延长老化电池的寿命)。这种流畅感源于iOS相对激进的后台进程限制,而自2009年发布的iOS3.0上出现的“苹果推送通知服务(ApplePushNotificationService)”在这其中起到了举足轻重的作用。ApplePushNotificationService的推送过程在iOS上,ApplePushNotificationService承载了所有应用程序的消息通知需求。当应用程序开发者(服务器)需要发送消息通知时,消息会被发送到Apple服务器,然后通过ApplePushNotification服务推送到设备。设备本身的应用程序不参与此过程。这也是为什么我们在中国也能收到Instagram、YouTube等国外应用的通知的原因——毕竟中国有苹果服务器,这个连接质量是有保证的。当然,后来苹果将这项服务集成到了自家的macOS中,如今的macOS也可以享受到这样的推送服务。对于移动设备来说,这样的统一推送服务使得应用程序无需在后台驻留,资源的使用也能得到很好的控制,从而在同样的配置下更加流畅和省电。Android官方推送服务:从C2DM到FCM不过,Android在统一推送方面也不甘落后。2010年,在Apple的推送通知服务发布后不久,Android2.2上推出了“CloudtoDeviceMessaging(C2DM)”。其原理类似于苹果的推送通知服务。发送到统一服务器,然后发送到设备。该服务于2012年被GoogleCloudMessaging(GCM)取代。与C2DM相比,GCM的主要优势是没有消息配额限制,对开发者更友好,能更好的省电。Google在2014年收购Firebase后,将GCM更名为“FirebaseCloudMessaging(FCM)”,进一步简化了推送服务的开发。Firebase云消息一路走过七八年,从C2DM到FCM,从Android2.2到Android8.1,统一推送服务伴随着Android一路成长。得益于此,对于国外安卓用户的手机来说,几乎没有卡顿和耗电的问题。反观国内,由于谷歌服务在中国大陆地区使用不稳定,国行安卓手机为了更好的用户体验,往往会精简谷歌服务,统一推送服务也同时下架。于是,各大第三方推送服务应运而生。Android第三方推送服务应该是各大手机厂商自家推送服务中最良心的了,比如华为的“华为推送平台”和小米的“米推”。这些推送服务集成在各个高度定制化的Android系统中,享有系统级地位,推送优先级比较高。如果你的小米手机里的APP都用上了米推,相信它也能像iOS一样流畅省电。但这通常是不可能的。开发者不可能兼顾所有厂商,为每个品牌的手机适配相应的推送服务。照顾好华为和小米,已经是很费力气了。另外,虽然厂商的推送服务在其他品牌手机上也可以正常使用,但是不能像在自家系统上那样实现系统级推送,推送服务的后台进程还是需要常驻的。华为推送平台其次,各大互联网公司也都有自己的推送服务,比如腾讯信鸽推送、百度云推送、阿里云移动推送等。很多使用这三个公司的各种安卓应用的朋友都知道他们的“企鹅全家桶”、“百度全家桶”和“阿里全家桶”。换卡变慢了。当你打开淘宝时,它会唤醒闲鱼、支付宝、天猫等应用。这种相互唤醒的目的是为了让共享推送通道保持活跃状态??,不被系统kill掉,以便消息能够及时送达。除了上述两种推送服务外,还有提供推送服务的专业第三方平台,如极光推送、友盟推送等。这个第三方平台类似于各大互联网公司的推送服务,所以使用同一个推送通道的应用会互相唤醒以保持通道活跃。面对上述众多的推送服务,不同的开发者难免会做出不同的选择,从而导致我们手机上的应用使用的推送服务五花八门,极不一致。即使不看多个推送服务本身占用的资源,应用为了保持推送通道活跃而相互唤醒的情况也经常让安卓手机满负荷运行,这也不难理解电话卡住并耗电。如今工信部出面推动Android统一推送,无疑意义重大。统一推送服务一旦普及,我们手上的安卓手机会变得更流畅、更省电,开发者也不用为配置各种推送服务发愁,同时也会遭受用户的吐槽。更重要的是,此举有利于培育良好的国内Android应用生态,将《Android 绿色应用公约》推广到更大范围。在当前生态下使用Android官方推送那么在当前生态下,是否可以使用Google官方的FCM推送呢?当然。只要你的手机装有谷歌服务,并且你的应用程序是从Play商店下载的,即使你在中国,也可以通过FCM接收推送通知。下图是我在国内网络下收到的YouTube通知。国内网络下接收YouTube通知对于国内一些占用系统资源较多的应用,建议使用“黑域”限制其后台活动,并开启“允许同步”接收通知(仅部分应用支持).以微信为例,说明支持黑域FCM,所以我们在黑域“黑域”微信并开启同步后,即使微信应用处于Standby状态(开启同步的应用也不会被强制停在黑域),也可以通过FCM及时接收推送消息。在黑域中开启微信的“允许同步”。当然,因为部署了谷歌的服务器,FCM在国内还是不太稳定。希望工信部牵头的统一推送服务早日到来,让安卓用户早日摆脱半天没电的窘境。
