让我们从基础开始。
移动网站是通过手机的网络浏览器访问的网站。HTML 页面由 Web 服务器提供(并且 UI 针对手机布局进行了优化)。
本机应用程序(通常称为“应用程序”)本质上是下载到手机的可执行应用程序。对于 iPhone,这些是用 Objective-C 编写的。对于 Android,它们是用 Java 编写的。对于 Windows Mobile,它们是用 C# 等编写的。
这是您面临的坏消息:
-为了让您的应用程序从 iPhone 的“主屏幕”启动,它必须使用 Objective C 进行编译。与 Android/Java 相同。
-为了访问相机,它需要使用Objective C(或Java for Android)编译。
所以这里有一些好消息给你:
- 您可以轻松地将本机应用程序编写为纯粹的 UI 前端,并使用 REST API 模型调用现有的服务器端代码以实现业务逻辑。您只需要公开您需要向应用程序公开的功能。所以这是重用现有代码库并使应用程序更简单的一种方法。有像 RESTKit 这样的优秀 Objective C 框架可以让这变得非常简单。
- 你可以让你的应用程序变得非常俗气,基本上让它成为你网站的网络浏览器,但如果你不为 iPhone 定制它,那可能不会得到 Apple 的批准。对于期望应用程序像应用程序一样运行的 iPhone 用户来说,这将是一个糟糕的体验。我不会推荐这个。
- 如果你打算发布到多个平台,或者真的不想维护一个 Objective C 项目(以及未来的 Java 项目),你可以使用 PhoneGap、Appcelerator Titanium 或 Sencha Touch 之类的东西。这些包装器将采用 Web 技术 (HTML 5) 编写的应用程序并将它们编译成本机应用程序。这些 HTML 5 应用程序可以访问相机等。您现有的开发人员不必学习 Objective-C 并且可以使用他们已经拥有的 HTML/JavaScript 技能。这些技术有很多好处。缺点是您的应用程序看起来/感觉不如原生应用程序或使用手机的任何“酷”功能。它将像一个好的移动网站一样执行。如果您有优秀的 UI/设计人员,您可以使用这些 Web 技术创建一些非常好的东西。
如果您使用 Google 原生应用程序与 phonegap(或 sencha touch)进行比较,则会有大量关于利弊的信息。这可能是您开始学习的好地方。