[随笔]移动App--本地应用还是html5?
时间回溯到10多年前,那个时候如果要开发一套针对中小企业的信息化方案,我想大多数开发者马上会想到delphi,利用delphi提供的相关框架和组件,可以很快速的构建以数据为中心的应用,那个时候我们称之为C/S架构。2000年前后,随着asp、jsp以及相关服务端脚本技术的快速发展,加上互联网发展的冲击,基于B/S架构的解决方案开始替代C/S架构,以浏览器作为客户端操作载体,服务器端统一维护和发布。
现如今,在移动互联网的时代,苹果应用商店模式的出现,似乎让人看到了pc时代的影子,以手机终端为载体,以应用为中心,用户使用各种功能,享受各种服务。智能手机就是一个导航器,其屏幕上布满了一个个app的图标,用户点击即可以进入每个应用的功能。那对于不同的手机平台,如何让用户快速的辨识和找到应用,并快速的开始使用,是各个手机平台取悦用户的一个重要因素。如果以手机浏览器为载体提供应用,管理众多应用入口的方式是使用浏览器书签,那么浏览器提供一个简单易用的书签管理工具就很重要。但是是不是移动设备上也会重现pc行业曾经的发展历程,即最终在移动设备上基于浏览器的应用替代本地应用成为主流呢?
我尝试从消费者的角度来看待这个问题。pc最开始进入普通消费者,是作为教育投资进入普通家庭的,至少在中国如此。而这之后,随着硬件成本的降低,硬件性能的快速提升,pc的娱乐功能开始逐步成为消费者购买的主要动机,买一台pc既可以看空姐的表演,还能操作劳拉大展拳脚,又能听听Ac Of Base的歌,一机多用啊。再后来,互联网的出现,彻底颠覆了pc的功能,pc除了娱乐,更多的时候成为人们了解世界的窗口,人们突然发现通过一台接入互联网的pc,面对一个近乎无穷的信息仓库,那种冲击是相当大的。后来随着上网成本的降低,人们开始自由的在互联网上表达自己的想法,同时跟朋友们分享信息,再后来大家也都看到了,整个互联网越来越像一个地球村,地球接近在一个虚拟的空间内达成了统一 ,在这个地球村里面,不同肤色、不同地区、不同阶层的人们自由的交流、共享、娱乐。这些都说明了一个问题,科技的发展从本质上是满足人类永无止境的欲望,难道不是吗?当人们不满足于仅仅坐在显示器前玩电脑,而是想吃饭、厕所、坐车都想随时与这个世界相连,于是移动设备闪亮登场,移动互联网开始爆发,以满足人类的渴望。但是这个与我们的话题有什么关系呢?我们讨论移动App到底应该选择本地应用还是基于web的应用,我们就从消费者的欲望说起,首先用户使用有一个App,前提是这个App满足了用户的某个使用诉求,他希望借助这个App满足自己某方面的需求,在基本需求得到满足的情况下,就会想想是不是操作方便、是不是好看、是不是稳定这一类第二层的需求,在第二层需求也得到满足的条件下,用户如果还面临选择,他或许会考虑哪一个App是我的Style,符合我的气质。把消费者的需求分成三个层次,处于第一层的是实用性需求,第二层是易用性需求,第三层是认同性需求。所以,一个好的应用应该是建立在你对消费者有用的基础上的,目前移动App趋于同质化,这个说明,对于同一个用户诉求,大家都能抓住并满足,于是,各家大展神威,开始第二层次上的大比拼,比谁的更好看,谁的更好用,谁的交互更好,目前这一层次上的竞争趋于白热化,最终还是会趋于同质化,ok,这个时候,就会开始第三层次的竞争,培育一个用户群体,让这个群体有着共同的信仰或者某种特性,让用户在这个群体中获得一种彼此认同的满足感,而这个在国内还没有厂商在这个方面专门提出或者明确以这个为目标去部署和实施。
让我们返回当前的话题,从消费者的角度,它不在乎你的App是本地App还是基于Web的应用。现在基于Web的应用可以采用两种方式来封装,一种是从浏览器中访问应用,这个跟传统的基于pc的互联网应用基本一样,唯一要做的是页面设计的能够适应移动设备的屏幕显示;第二种是通过一个轻量级的本地应用,封装系统提供的浏览器组件来产生应用,开源社区也有诸如phonegap之类的项目来提供此类支持。现在的移动平台原生自然都是支持本地应用优先,我们讨论的是基于html的应用会否越来越多,并逐步大范围取代原生应用,本着谁主张谁举证的原则,我们来看看基于html在移动设备上构建应用,都有哪些优点。
第一: 基于html的应用可以跨平台,这个可能是任何人谈到这个话题的第一反应,我也不例外,你使用标准的html技术开发的应用,基本可以在绝大多数主流的移动平台上平滑运行,甚至于你采用的html5的技术也能在移动设备上表现良好,反而是pc上还不得不考虑浏览器的兼容性;
第二,采用标准html意味着你不费力气就获得了大量的开发人员,因为原有的互联网web开发人员基本都可以稍加学习即可直接开发基于移动设备的应用;
第三,如果你基于html的应用是部署在服务器端,而移动设备通过移动浏览器或轻量级封装的本地应用来访问,那你顷刻间获得原有传统web应用的好处,不用考虑系统升级维护的烦恼,因为你只需要做好你服务端的程序即可;
第四,html5在交互、表现力度、丰富度方面与原有标准比有着极大的提升,在人机交互上基本可以满足用户的期望值,而现有的主流移动操作系统对html5的支持很好,市场上的智能手机设备基本都或多或少支持html5规范,这无疑对开发者是个良好的开端。
以上谈论的都是优点,但不可否认,使用html技术来开发移动应用还是有其短板的。其中基于html开发可否访问本地资源或系统功能,这恐怕是诸多开发者问的最多的问题!关于这点,我们要从两种类型的应用来看,一种是基于移动设备浏览器来访问的应用,由于受浏览器安全机制的束缚,基本不能与系统层进行交互(这里指移动平台的系统api接口),当然浏览器本身暴露的可访问接口除外,但是这一类的应用我们还是可以充分利用设备本身的计算和存储能力,避免过多的网络请求或者非核心的计算请求,在这一类的请求中,比较集中的就是数据的存储、整理和展现工作,而html5当中的web sql database和web storage两个规范基本可以满足我们对常见数据处理的要求。我们再来看看另外一种html的应用,即使用本地代码对系统浏览器进行一个轻量级的封装,然后通过这个内嵌的浏览器组件来完成用户需要的功能,主流的移动平台在这里,都可以通过某种方式让开发者可以通过定制的url分析,从而将用户的操作行为转换为对系统层的访问,这种方式就绕开了浏览器的安全机制,在系统层和浏览器之间架设了一个桥梁,但是,不幸的是这个桥梁不是万能的,并不是所有的系统层功能都能方便的通过这个桥梁来访问和使用。开源项目phonegap在这个方面已经做得相当不错,屏蔽了各个平台的差异性,以一致性的接口封装,让开发人员用js来访问系统功能。因此,使用html来开发移动应用,其最让人诟病的就是无法深入挖掘系统功能和硬件特性,抛开这点不说,不管你采用上述哪种方式来开发基于html的应用,如果是数据密集型的应用,其实真的是一个不错的选择。
针对这种情况,我的建议是,如果你开发的是面向大众的消费类应用,比如游戏、工具、社交,我建议还是使用本地应用比较好。如果你是部署一个基于移动设备的企业信息化方案,用html方式性价比较高。当然,还有一种方式就是混用,为什么不?在本地应用中,某些信息浏览、信息查询或者可以充分利用原有web功能的地方,完全可以嵌入浏览器,用html方式来访问。但是,不管采用哪一种方式,有一点必须牢记,那就是你必须让你的应用符合所在移动平台的用户体验习惯,除非你引入了更创新的交互方式,否则,还是不要打破这个习惯,因为在移动设备如此有限的可视空间内,用户的操作惯性是很难改变的。总之,不管你采用哪种方式开发移动App,请尊重你的用户,他们才是你的未来!