# 1\.5 星到 4 星的背后：Facebook iOS 应用涅槃

- 作者：何宗丞
- 发布时间：2012-09-17 16:17
- 分类：特稿
- 原文：https://www.ifanr.com/155311

[![](https://s3.ifanr.com/wp-content/uploads/2012/09/facebook-iOS-app.jpg "facebook iOS app")](http://www.ifanr.com/155311/facebook-ios-app)

在四天内，半数 iOS 用户升级到最新的 Facebook 应用。从 8 月 24 日 5.0 新版上线至今短短 3 周的时间内，Facebook iOS 应用在 App Store 的平均应用评分已经从 1.5 星飞涨至 4 星。

页面与旧版完全无异，应用经历了怎样的涅槃让挑剔的用户态度发生如此大的转变？

其实，Facebook 早期长期专注于 HTML5 的应用，试图建立一个用户手机应用程式的基础架构，iOS 应用也不例外，不过因此造成的加载速度慢等问题极大地影响了用户体验。

据 [TechCrunch 的报道](http://techcrunch.com/2012/09/13/facebook-for-ios-review/)，Facebook 移动应用产品经理 Mick Johnson 在谈及旧版应用的失误问题时说：“在一个 App 中嵌入 HTML5 内容并非人们想要的。”

Facebook 早先之所以选择 HTML5 开发应用主要是看中其跨平台、易维护的特性。利用 HTML5，只要一次开发就可以向多个平台发布产品，从而覆盖到尽可能多的平台和用户。

“HTML5 驱动的 Facebook 移动版对分裂的移动平台至关重要，我们总不能为市面上 7000 种不同的设备开发本地应用吧。”Facebook 平台总监 Doug Purdy 坦承。

另一方面，跨平台使用一套代码，也方便快速迭代升级，只要愿意，Facebook 就能够利用 HTML5 技术随时在服务器端对应用进行更新，从而方便地测试新功能。

不过也正因为过于依赖网络技术，iOS 应用缓慢的加载速度变得令人难以忍受。这种阻碍意味着用户会浏览更少的内容、接受到更少的推送。用户的减少和注意力的丧失对于广告日益成为主要营收来源的 Facebook 无疑是一个灾难。

于是团队按下了 Reset 按钮，舍弃 HTML5，完全利用 iOS SDK 进行开发。新应用采用了与 Facebook Camera 和 Facebook Messenger 相同的代码库。据悉，这两款应用的面世一部分原因正是为了测试用户对本地应用的态度。新应用最显著的变化是速度的提升，包括应用启动、刷新实时新闻、打开图片三方面。官方称新版应用的运行速度是旧版的两倍。

据 [Facebook 官方博客介绍](https://www.facebook.com/notes/facebook-engineering/under-the-hood-rebuilding-facebook-for-ios/10151036091753920)，提升速度具体的实现方式是对多任务的系统资源进行调度。比如以主线程控制用户界面、处理触控事件，在后台处理网络活动、存盘、JSON 分析等对计算资源要求较高的任务。

旧版应用在启动时长时间地加载遭到不少用户的诟病。因此，新版应用为了提升用户体验，在应用启动时显示此前缓存的内容。不过当用户的动态新闻过多，会导致应用需要从磁盘中加载，启动速度会变得更慢。开发团队解释，他们的解决方案是在初始异步布局计算时，存储在 Core Data 的高度，避免在委托函数中计算布局信息。然后他们将“内容”模型对象进行分解，只从磁盘获取内容的高度，然后再读取其余的内容数据。

当然，速度的提升同样带来一些局限——开发团队无法保持从前的更新速度。不过，在应用中可能经常更新的部分，应用仍然会使用 HTML5 的代码。

早先时候，Facebook CEO 马克·扎克伯格在 TechCrunch Disrupt 大会上[直言](http://www.ifanr.com/152429)公司对移动战略理解有误，错误地将赌注押在 HTML5 技术上。扎克伯格同时表示，应用速度的提升促使用户浏览量水涨船高，公司得以拥有更多机会向用户展示广告。

“相比较桌面平台（广告潜能），移动平台更接近于电视。”扎克伯格通过比较几个平台赢利能力表达了自己对移动平台的信心。而 iOS 应用作为 Facebook 移动战略的关键，将日益逐渐发挥巨大的作用。
