国内安卓推送的窘境 运营商赢了微信又能如何?

袁迪  ●移动互联网 ●  2013-04-15

曾经有这样一段笑话,某高铁列车因为设备故障原因停在某小站,车内饮品食品均已抢购一空,躁动的空气弥漫在车厢各个角落,诺基亚手机用户电量充沛心中淡定,苹果用户看着1/3的余电量情绪还算稳定,安卓用户看着电量刷刷向下掉,有的手握备用电池待命,有的早已惶恐地四处抢夺充电插口……的确,智能手机发展到今天,处理器、内存、显示芯片、屏幕等等硬件都已不是问题,电池却成为智能设备唯一的短板。

如今,三星NoteII 5.3寸的大屏手机,已经将电池容量升到了3100mAh,主流安卓手机也将电池容量提升至了2000-2500mAh,以解决安卓一直以来被用户诟病的待机时间问题。不过,安卓拼电池容量打得热火朝天的时修,苹果的最新一代手机iPhone 5的手机电池却依然停留在1500mAh。虽然屏幕耗电与安卓大屏相比确实少一些,但苹果在节电管理方面似乎确实比安卓更有“心得”。但事实的确如此么?

近期围绕微信收费的传言成为移动互联网圈子里热议的话题,微信也在4月10日官方发布消息否认向用户收费的传言。如果复盘运营商与微信纷争的始末,我们不难发现,拥有大面积非3G用户的中移动不满的声音似乎最大。与此前一篇在商业视角写微信运营商之争的文章不同,本文将从技术角度讲讲这一问题的来源始末,将在第一部分讲讲安卓APP在国内做消息推送的难题,在第二部分通过数据分析一下为什么微信对中移动的冲击最大,并在第三部分讲讲我对这一问题的看法。

blog0701d1

安卓手机费电的根源——推送

消息推送,顾名思议,就是手机内的APP在需要的时候向用户推送一条信息显示在信息栏上,并以铃声、提示音等方式提醒用户打开。这条消息有可能是微博、微信的新消息,也有可能是闹钟提醒、日程提醒,也有可能是开发商为了提醒用户尽可能多地开启APP的营销策略,如推送一个免费游戏道具等。

在iOS和安卓原生系统中,苹果和谷歌两家大佬都充分考虑到了第三方APP推送消息的诉求,并且为开发者提供了统一的推送接口。有所差异的是,在苹果这个封闭的体系中,推送通道被定义成标准的系统级接口供开发者使用,而谷歌的通道则被集成在Google服务包(包含Google Play、Google Now、地图和日程表等官方应用)中,作为可选服务提供给开发者。

理论上讲,开发者使用苹果或谷歌提供的标准接口开发APP做推送最为省事,也不必为高并发推送的技术细节而自己架设推送服务器。在iOS中,绝大多数开发者使用苹果官方的通道,而对于安卓系统,由于Google官方推送通道的服务器因为某些原因不够稳定,而国产安卓手机、大多数第三方ROM开发商常因为种种原因将安卓系统的Google服务包阉割掉。对于想通过消息推送与用户互动的APP开发者来说,如果Google官方通道不稳定,并且不能够覆盖大多数用户的手机,那么推送的事情就要由自己来完成,这对中小型开发商来说,将面临技术与成本两个方面的压力。

历史上任何一个伟大产业的兴起,都有许许多多看到当局者需求的“卖水人”,如美国淘金热时卖牛仔裤的,澳门赌场边上卖水饺的……国内安卓开发的生态系统也是如此。在笔者半年多看过的移动互联网项目,就有如极光推送、个推、巨能推等一批为中小开发者提供推送的第三方软件服务公司。他们的商业逻辑是中小开发者无法承受APP千万量级推送的技术成本和服务器成本,因此为开发者提供推送服务,并以此掌握不同品类APP的运营数据。其中,为抬杠等一些热门APP提供推送服务的极光推送,在中小开发者中拥有良好的口碑,公司的估值已达到2500万美金。

说了这么多,我们就能够理解iOS与安卓平台在国内推送的现状,iOS走苹果统一通道,安卓走自己搭建的或第三方提供的通道。这样的现状对安卓来说会造成两方面的问题,网络资源抢占和手机费电。这是由于苹果设备只开设一条推送通路,而安卓设备中的每一个APP都可能“私”开一条通路。一个简单的例子,微信、QQ和微博在iPhone上的推送很可能只走苹果服务器到用户手机一条通路,共用一个用户手机与运营商建立的网络连接,而安卓设备则需要用户手机与运营商建立三条推送网络连接。结果显而易见,三条连接通路更占用网络资源,当然对安卓用户来讲也更加费电。这也是安卓手机电池容量不段增加也解决不了待机问题的根源,也是苹果在iPhone 5上推持1500mAh电池的底气所在。

中移动叫板微信的原因——2G架构之痛

目前,国内保持激活的智能设备保有量已超过3亿,其中苹果设备达1.1亿,而安卓设备达到1.9亿,并加速抢占市场份额。对三家运营商而言,中国移动的2G(GPRS)和2.5G(EDGE)用户的基数是最大的,由于中移动2G架构的短信与数据流量都走数据通道,某种程度上造成了通信连接资源的稀缺,用户安卓手机中的每一个APP都挂一个长连接进行推送,那么需要走数据通路的短信则势必会出现延时等现象,这也是逢年过节群发短信屡屡遇到延迟和拥塞现象的重要原因之一。

在安卓的Google服务框架的推送标准的定义中,主动消息推送(PUSH)是通过长连接实现的,为了保证推送通路的畅通,APP所在服务器会在每28分钟向已通过2G/3G网络连接的用户手机发送一个心跳测试,这种“慢心跳长连接”的设计,很大程度上是为了用户手机节电而设计的。中移动2G/2.5G网络的另一缺陷是,如果已经建立的一个连接6分钟没有数据往来,那么这个连接将被强行停止,这也意味着微博或微信这样的APP与移动2G手机建立的推送通路,如果在6分钟之内没有心跳测试,推送通路将被强制关停,安卓28分钟/心跳的设计在中移动网络中完全失效。

根据微信公开的数据,其安卓版本的心跳测试是以2.5分钟为单位的,目的是最大程度保证通讯的即时性。如果按照一个用户每天12小时保持微信后台运行计算,720分钟将会有288次的心跳测试,这也意味着单就微信一款产品,一天就会有300次左右通信行为,再加上其他APP的心跳测试通信,安卓手机费电在情理之中。对于移动的2G网络而言,频繁的连接心跳测试和大量连接通路占用,势必会造成信令资源紧张。微信这种拥有3亿多用户的即时通信类APP,成为中移动首先对准的茅头,也在情理之中。

在联通、电信的3G网络蓬勃发展的今天,中移动的TS-SCDMA制式在技术和终端种类等因素上的短板,导致中国移动的2G网络依然成为其数据流量的主要通道。由于2G网络通信协议并未针对长连接传输进行优化,IP链路层的高频度信令支持能力不强,对长连接空闲时间的支持较短,结果导致2G网络承受着沉重的多APP频繁的心跳检测负担。

一定要用长连接的方式推送么?

综上两节所述,由于行货安卓手机阉割了Google服务包,开发者失去了天然的省电推送通路。无论是自己架设推送服务器,还是使用第三方推送服务,都离不开长连接的方式,而微信这种即时通信工具的普及,占用了大量网络资源和高频次心跳检测,给运营商特别是中移动带来了极大的负担,移动率先叫板微信是可以理解的。

不过,Google自己的不能用,长连接让运营商叫苦不迭,有没有其他的解决方法呢?结论是肯定的,在移动通信网络中信令是天然的消息推送载体,但是国内的运营商都将这一省电、不占用长连接资源的通路用于了SMS服务(如彩信等赚钱的增值业务)中。移动开发商没有信用收费的运营商信令,而选择了对三方都无益的长连接,核心就在于付费与否。互联网选择了免费方式服务用户,侵蚀了运营商的SMS和语音业务,同时遭到了日渐管道化的运营商的反击。两个产业商业利益间的冲击,以及商业价值观的巨大差异,才是造成这种博弈的根源。

推送、长连接、信令、SMS……运营商叫苦,可如果没有开放和变革的心态,以及拥抱移动互联网大势的心境,赢了战役,输了世界,又如何?

袁迪投资经理

关注TMT行业的早期投资,拥有清华大学自动化专业学士及硕士学位。