智能手机应用程序的形式多种多样,既有与设备框架紧密结合的本机应用程序,也有在HTML5的基础上制作的Web 应用程序,还有两者结合使用的混合型应用程序。
下面我们来介绍它们各自的特征。
本机应用程序
本机应用程序是指从如App Store 和GooglePlay 等应用商店中下载下来,并安装在iPhone、Android 等智能手机,或是iPad 等平板终端上使用的应用程序。
因为本机应用程序已经提前安装在设备上了,所以可以根据设备不同的状态控制是否要发生通信等动作,它的启动等所有操作也往往比Web 应用程序更快。另外,由于可以根据应用的需求定制UI,所以应用程序的可操作性也提高了。
并且,它也可直接使用设备内置的相机、麦克风、传感器等固有的功能,以及电话薄等设备内置的数据,这点可以说是个很大的优势。
本机应用程序的开发
在开发本机应用程序的时候,要使用各目标设备中的操作系统所提供的框架。因此,在开发iOS 应用时要使用Objective-C,在开发Android 时要使用Java。使用设备自带的框架,就可以集成前面说到的相机、麦克风或是电话簿等设备中固有的功能或数据来进行开发。
在开发上最大的问题是需要根据目标设备中的操作系统使用不同的开发语言,整体的开发成本很高。因此,如果要开发iOS 和Android都能使用的应用程序,就必须要用Objective-C和Java 分别制作两个不同的应用程序。
为了解决这样的问题,出现了例如TitaniumMobileA这样的框架,可以用同一份代码生成多种操作系统的本机应用程序。
---A https://www.appcelerator.com/platform/titanium-platform/
Web 应用程序
智能手机的Web 应用程序与传统的Web 应用程序基本一样,是一个运行在浏览器上的应用程序。由于使用了浏览器,就不必像本机应用程序一样安装于各种不同的终端,只要访问特定的URL 就立即可以使用了。
智能手机的Web 应用程序与传统的Web 应用程序之间的区别在于要针对不同的智能手机固化屏幕大小,以及需要考虑页面布局以适应小尺寸屏幕。
对于应用程序的发布,由于应用程序的代码并没有在终端上,而是在服务器上,所以更新或发布都很简单,即使没有通过应用商店的审核也可以立刻发布。另外,只要是安装了浏览器的终端都可以使用Web 应用程序,因此也不必为了对应不同的设备而制作多个应用程序。
与本机应用程序相反,Web 应用程序由于是运行在浏览器上的,所以可能会限制使用相机等设备中的固有功能。
Web应用程序的开发
智能手机的Web 应用程序大多使用HTML5、CSS3、JavaScript 开发。我想对于那些开发过传统Web 应用程序的工程师来说,也可以在一定程度上沿用他们以往的经验和既有的代码来开发智能手机的Web 应用程序,不会出现什么大的问题。
由于使用了如CSS3 和HTML5等Web 开发的先进技术,相比传统的Web 应用程序,智能手机Web 应用程序的表现力也更加丰富。另外,以jQuery MobileB为代表的专门针对智能设备的程序库,也使得基于Web 的应用程序可以具有与本机应用程序相似的操作性。
----B http://jquerymobile.com/
在页面的外观和布局方面,由于智能手机与PC上的浏览器不同,可以通过PC浏览器的设置或扩展功能将浏览器的用户代理(UserAgent)设置为智能手机,再通过浏览器上的iOS和Android 模拟器实施测试。
在开发环境方面,可以使用与开发传统Web应用程序相同的环境。编码时也可以使用自己喜欢的编辑器或者IDE(Intergrated DevelopmentEnvironment,集成开发环境)。如果选择Rubyon Rails 等Web 应用程序框架的话,还可以使用这个框架中提供的调试环境和测试环境。
混合应用程序
所谓混合应用程序,顾名思义,就是本机应用程序和Web 应用程序的结合。应用程序本身由本机应用程序组成,不过在本机应用程序中嵌入了名为WebView 的浏览器组件。此时使用本机应用程序查看网站时显示的页面,与Web 应用程序的页面是一模一样的。
由于混合应用程序本身是作为本机应用程序开发的,因此不仅可以发布到应用商店中,也可以使用设备上的固有功能。另一方面,因为混合应用程序的页面和页面跳转又是一个Web 应用程序,因此开发和修改都可以在服务器端快速地完成。
在混合应用程序中,可以充分 利用本机应用程序和Web 应用程序中的各种优势。既可以拥有本机应用程序的精准控制能力和性能方面的优势,也可以拥有Web 应用程序的快速开发能力,从而担当起开发大部分内容的任务。总之,充分地利用不同类型的应用程序的优势十分重要。
混合应用程序的开发
当然,在开发混合应用程序时,无论是本机应用程序还是Web 应用程序都需要开发。
Web 应用程序的部分前面已经说过,在开发时需要注意智能手机的限制。而本机应用程序的部分一定会根据目标设备的环境而不同,因此就开发前的准备工作和开发本身来说,也必须要花费一定的时间和精力。
混合应用程序开发的支持工具中有一个名为PhoneGapC的框架工具,使用它可以将HTML5+CSS3+JavaScript 开发的Web 应用程序直接转换为本机应用程序,进而成为一个混合应用程序。在此基础上,由于PhoneGap 自身也提供了使用本机功能的程序库,因此在基于Web 应用程序进行开发时,也可以使用设备中的固有功能。
---C http://phonegap.com/
此外,Adobe PhoneGap BuildD云服务提供了将Web 应用程序上传,就可以将其构建为本机应用程序的功能。