Facebook首席iOS软件工程师:开发原生iOS应用的几点心得

 

什么因素最影响用户的使用一款应用程序行为?怎样提升用户的体验?Facebook的iOS应用的首席软件工程师Adam Ernst今天在Menlo Park,和我们分享了Facebook iOS团队在开发过程中遇到的问题,找到的解决方案,以及Facebook移动应用未来的发展。

用户的要求很简单:无缝连接!速度!


Facebook是一个基于Web起家的互联网服务公司,虽然今年Facebook的各位高管频繁表示Facebook是一家移动公司,这也无法改变其创始基因。Adam也提到,用户需要的,是无论在网页上还是移动终端上都能有一样的体验,用户其实根本不需要你特地为移动终端做一个独一无二的交互界面。然而,这个“无缝连接”的一致体验,其实比本身建立一个原生态应用更复杂。

Adam在演讲提到,当Facebook的移动应用速度提高了,用户的好评度就明显上涨了。没有人愿意等着一个应用加载2分钟都没有能够刷新出新的内容,速度是Facebook iOS团队一直致力提升的地方,他也分享了更多关于速度的问题。

 

HTML:无缝连接应用开发平台

HTML作为应用开发平台带来的三大好处:

  • 时效性:HTML能够让用户在最短的时间内体验到你应用的改变。Adam提到之前Facebook曾新增了一个功能,结果一夜之间就有五千多位用户使用,并给出了及时的回馈。
  • A/B测试:A/B测试是一种交流性的新产品测试方式,往往是针对一个功能同时推出两个不同的版本来测试市场反应,并选择最佳的方案。加上高时效性的特点,可以很快选择出适合市场的版本。
  • 只需一次编码:没错,基于HTML的应用,只需一次编码,就可以完成网页、iOS、Android等不同运营系统的应用。这对开发者来说当然是个福音,作为Facebook,这也是不会放弃HTML5的一个原因。

 

应用加速小贴士

说到如何加快速度,Adam有颇多心得:

  • 缓存数据客户端:

将数据缓存在本地存储器上的速度远远快于把数据存在云端!哪怕只有一小部分数据,你也会明显地感觉到速度的差别。并设计一个小型的数据库来记录本地数据,Adam也给我们看了Facebook iOS应用存储在客户端的数据,也有70多张表!

  • 从数据存储器上批量加载:

比较下列两组编程的区别,或许你能看到如何让你的应用运行地更快!

  • 团队合作

就像由一个人单独完成一件事情会需要更长的时间一样,你可以把应用的任务分配给不同的程序来完成。用网络线程(Network Thread)下载和解析数据;用渲染线程(Render Thread)去获取和呈现用户的故事,用大数据调度中心来完成后台任务,并不断循环该线性过程以达到最完美状态。

  • 保持图形处理器GPU的愉快运作

我们要做的是尽量减少不必要的图文量,比如说多层重叠的图片会需要更长的加载时间,不如就用一层不透明的颜色。再比如说,简单的文本会比复杂的文本内容来的快的多。同时,你可以尽可能地在有条件的时候缓存一些特定的版式和图片,来减少图形处理器的工作量。

  • 不要全屏显示加载状态


如果你是用户,愿意看到上面的小转轮不停地转动5分钟还没有完成加载吗?Facebook的要求是,永远不要出现这样整屏的等待状态!Adam说,宁可给客户显示2天前的状态,也别让屏幕空着,一定要给用户一些可以互动的内容,而非只能在一边干等待。

 

订阅更多文章