几个月之前,ZM同学向我投诉了iPad的恶行:为什么新的App都不再支持我的iPad1呢?
这个问题有个背景知识:iPad 1无法安装iOS 6,而现在,支持iOS 5的App基本上已经绝迹(实际上支持iOS 6的App也日渐稀少)。
当时我回答不出这个问题。
夏教授调笑说:只怪iPad的质量太好,如果是别的产品用了两年肯定早就坏了,问题也就不存在了。
这个问题一直在我脑中思考。
随着我对iOS平台开发经验的积累,我对这个问题的理解也越来越深。
第一篇文章:《
The Fallacy Of Android-First》,EMU,一个社交App,因为安卓平台首发而名噪一时。但最近他们决定把安卓App下线雪藏起来。他们的CEO写了一篇文章解释为什么他们要这么做。文章讲了很多细节问题,但归根结底就是一个原因:维护安卓App的代价太大,每天都要付出大量的时间精力来修复各种Bug,外加客服电话给用户打爆。而iOS App则稳定得多。
提到这两个文章,似乎有点跑题。问题是为什么iOS App不再支持旧设备。而前面两个文章是论述为啥开发者喜欢iOS平台而不是安卓平台。
其实这两个问题是有联系的,非常大的联系。
安卓为什么会出现这么大的开发难度,正是因为它试图兼容旧设备!这个旧设备:是指手机内部的操作系统使用的是旧版本。
为什么安卓必须支持旧设备,上次回国的时候,我把高中同学的手机统计了一下,一半人用iPhone,一半人用安卓。而在安卓用户中,2.2版本占了一半以上。2.2版本发布于2010年5月,也就是4年前。
基于这个现状,开发者必须支持旧设备,否则等于自己舍弃掉一半以上的潜在客户。而这些旧设备五花八门,搞得开发者不堪其扰。
那么iOS那么不需要支持旧设备了吗?我在做iOS开发的时候,看了一眼iOS设备的版本占有率图表。
2014年4月6日的图表如下:
一开始我准备兼容到iOS5(这样等于支持了iPad 1),看完这个图,我就改主意了。
做事都有个投入产出比。如果你花了大力气去做一件事情,最好能够赚得金满筐银满筐。
我算了一下,如果支持iOS5,我不能用自动布局这个特性:这意味着每个界面我都写代码让它手动适配3.5寸屏幕和4寸屏幕。
这个任务也不算难但也有好几个小时的工作量;作为回报,我换来了额外的2%的用户。
换句话讲,如果我不支持iOS5,也就是说,每50个人里面,可能有一个人用不了我写的App(其中包括ZM同学)。我一琢磨,觉得连iOS6也不升级的用户,有非常大的可能他从来都不会去App Store购买App。换句话讲,这部分用户的含金量比较低。
大部分开发都会选择不支持iOS 5,我也一样。
苹果并没有阻止开发者去支持iOS 5,开发者自己做出选择决定不支持旧设备。原因是两个:
- 支持旧版本性价比太低
- 使用新版本可以使用新特性
所以对于开头这个问题,很好解答了:“因为顾客太少,所以没人卖”。App开发者并不是势利眼,他们不过是在遵循市场规律而已。
后继:我在开发过程中,又遇到了网络部分的API的处理,iOS7提供了新的API来简化代码优化性能。我犹豫了一下,还是决定不使用iOS7的新API,毕竟11%的潜在用户在使用iOS 6。等到iOS 6的市场占有率继续萎缩,那么去掉对iOS 6的支持是早晚的事情。