原生App vs 移动Web App

189次 2015-04-22

每当你打算开发移动应用程序时,都要考虑你的应用如何创建以及如何部署。如今已有两个主要的方向:原生App 以及 移动Web App。那么在今天这篇文章中就来比较一下两者的区别来供大家参考。


原生App vs 移动Web App : 定义
什么叫做原生App?
原生App是专门针对某一类移动设备而生的,它们都是被直接安装到设备里,而用户一般也是通过网络商店或者卖场来获取例如    The App Store  与  Android Apps on Google Play .

随便说几个原生App的例子,比如 iOS 的 Camera+  以及 Android 的  KeePassDroid

什么叫做移动Web App?
一般说来,移动Web App都是都是需要用到网络的,它们利用设备上的浏览器(比如iPhone的Safari)来运行,而且它们不需要在设备上下载后安装。

原生App 与 移动Web App的比较
用户界面
有些公司为同样的产品制作了原生App与移动Web App,下图就是Facebook的原生App与移动Web App的界面比较:
注意这两者的不同地方会产生不同的用户体验结果。


开发方面
    原生App

  •         每一种移动操作系统都需要独立的开发项目
  •         每种平台都需要独立的开发语言。Java(Android), Objective-C(iOS)以及Visual C++(Windows Mobile)等等
  •         需要使用各自的软件开发包,开发工具以及各自的控件

    移动Web App
  •         因为运行在移动设备的浏览器上,所以只需要一个开发项目
  •         这种应用可以使用HTML5,CSS3以及JavaScript以及服务器端语言来完成(PHP,Ruby on Rails,Python)
  •         这里可没有标准的SDK,基本任意选择
别忘了有一些跨平台的开发工具,比如PhoneGap, Sencha Touch 2以及Appcelerator Titanium等等。

能力方面
    原生App
  • 能够与移动硬件设备的底层功能,比如个人信息,摄像头以及重力加速器等等
    移动Web App
  • 只能使用有限的移动硬件设备功能。

赢利
    原生App
  • 可以使用专门的移动平台的广告,比如AdMob
    移动Web App
  • 基本没有限制,但也没什么优势
注意原生App能够直接在对应的官方商店进行定价就能马上赢利,然而移动Web App需要你自己完成付款的系统,这可不是一件简单的事情。

获取方法
    原生App
  • 直接下载到设备
  • 以独立的应用程序运行(并不需要浏览器)
  • 用户必须手动去下载并安装这些原生App
  • 有一些商店与卖场来帮助用户寻找你的App
    移动Web App
  • 从移动设备上的浏览器访问
  • 不需要安装额外的软件
  • 软件更新只需要服务器就够了
  • 因为现在没有什么商品或卖场提供这种App,所以如何搜索这些移动Web App相当不简单

版本控制
    原生App
  • 用户可以自由地选择是否更新软件版本,所以会出现不同用户同时使用不同版本的情况
     移动Web App
  • 所有的用户都是用同样的版本
优势
    原生App
  • 比移动Web App运行快
  • 一些商店与卖场会帮助用户寻找原生App
  • 官方卖场的应用审核流程会保证让用户得到高质量以及安全的App
  • 官方会发布很多开发工具或者人工支持来帮助你的开发
     移动Web App
  • 跨平台开发
  • 用户不需要去卖场来下载安装App
  • 任何时候都可以发布App,因为根本不需要官方卖场的审核
  • 如果你已经有了一个Web App,你可以使用 responsive web design来辅助改进(这也是优势?)
缺陷
    原生App
  • 开发成本高,尤其是当需要多种移动设备来测试时
  • 因为是不同的开发语言,所以开发,维护成本也高
  • 因为用户使用的App版本不同,所以你维护起来很困难
  • 官方卖场审核流程复杂且慢,会严重影响你的发布进程

    移动Web App
  • 无法使用很多移动硬件设备的独特功能
  • 要同时支持多种移动设备的浏览器让开发维护的成本也不低
  • 如果用户使用更多的新型浏览器,那问题就更不好处理了
  • 对于用户来说,这种App很难被用户发现

原生App vs 移动Web App : 你如何选择?
所以在你准备做移动App时,你应该先问问自己以下几个问题:
  1. 你的应用是否需要使用某些设备的特殊功能,比如摄像头,摄像头闪光灯或者重力加速器
  2. 你的开发预算
  3. 你的应用是否一定需要网络
  4. 你的应用的目标硬件设备是所有的移动设备还是仅仅只是一部分而已
  5. 你自己已经熟悉的开发语言
  6. 这个应用对于性能要求是否苛刻
  7. 如何靠这个应用赢利
我想这几个问题应该能让你做出明智的选择。

结论

你的选择是原生App还是移动Web App,主要受商业目标,目标用户,以及技术需要这些因素影响的。其实更多时候你也不要为选择那种App模式烦恼,正如上文提到,类似Facebook这样的公司就为用户提供了两种选择。然而对于大部分人来说,预算,资源限制将会逼迫我们只能选择其中一种(或者只能以其中一种为重点)。