混合与原生移动应用程序

我需要为iOS和Android创build一个移动应用程序(所以2个应用程序)。 该应用程序将使用一些原生的移动function,并且许多function与显示静态/dynamic信息有关。 我打算移动Web应用程序的信息,并简单地将网页(HTML5)embedded到移动应用程序(基本上称为url和显示信息)。

这是开发移动应用程序的常用方式吗? 或者可以有以下混合方法的问题? 本地应用比混合应用有什么优势(反之亦然)

感谢Kamal

我主要完成原生的Android开发,但我也帮助debugging了一些使用“交叉编译”平台(如PhoneGap)创build的应用程序,交叉编译的应用程序有一些怪癖,只是让平台为您处理,如果你build立一个本地应用程序。

例如,我最近debugging的一个没有为后退button事件实现处理程序,这是一个非常不舒服的用户体验。 在原生的Android应用程序中,我认为它与iOS相同,尽pipe我从来没有尝试过构buildIO,系统会为您处理后退button,因为它知道当前的Activity正在运行,并且可以重build它的UI 。 在PhoneGap中,它本质上是一个包装在Android应用程序中的webkit浏览器,所以它不能访问像backstack这样的东西。

如果你记住系统不会为你处理这些types的事件,而且你不需要访问电话上的所有传感器,那么你可能会逃避使用这些框架之一

有趣的是,我经常被问到或谈论这个具体的问题。 这是我对此事的基本感受:

HTML 5,混合HTML 5 /本机和本机应用程序都是很好的,几乎可比的select,但select什么是一个不同的故事。

下面是我可能select其中一个原因的一些原因,既然你们正在帮助我理解编程世界,那么我会抛开产品(我主要做的)对市场定位和事物的业务方面的看法。

HTML 5的技术推理 :我需要这个应用程序几乎可以在任何用户可以运行的设备上运行,这个应用程序不会涉及到任何专有或复杂的设备function(上传照片,触发推送通知…)。

HTML 5产品推理 :HTML 5可以通过两种方式大幅度降低开发成本。 (1)较大的人才库(因此成本较低)竞争像HTML 5开发人员这样的标准前端工程项目,而iOS和Android开发人员要求很高的奖金,而且很难得到,(2)只需要构build它一次,它更容易维护,并build立分期复制。

此外,您不必处理app store占用您的一部分收入。 “金融时报”(FT)最近做了一个典型的例子。 英国“金融时报”把钱从昂贵的订阅中拿走,大多数银行家都是由他们各自的银行购买的。 因此,他们有一个忠诚的,圈养的和价格不敏感的观众,他们的主要收入来源几乎全部来自订阅。 当他们在苹果App Store上有他们的应用程序时,他们不可能将30%的新订户赠予苹果。 他们从应用程序商店下架,构build了一个最全面和令人印象深刻的web应用程序,感觉非常像一个应用程序,几乎可以在任何支持java的手机上运行,​​并允许他们从订阅者那里获得资金。 在开发社区,他们获得了很多赞誉(可以通过手机查看,我认为是www.ft.com),并通过创新提高了他们的品牌知名度。 游戏,设置,匹配。

HTML 5的最终巨大好处是您不需要处理应用程序商店。 这意味着你的手不受束缚,你也可以在飞行中改变事物,允许更多的迭代和更好的产品形成比提交给苹果更快,等待两个星期,你想要做的每一个增强(这是有点在混合方法中也减轻了)。 在ABC新闻网站pipe理HTML 5平板电脑网站后,我们能够在新闻行业以非常快的速度解决问题,这一点非常重要,使得这种方法非常适合这种types的应用。

混合HTML 5 /本机技术推理:我希望这个应用程序尽可能多的平台上运行,但我会交易其中的一些,以获得一些stream行的专有和复杂的设备function。 我也对这样的事实感到满意,即devise可能并不总是像素完美的,偶尔会出现低迷的可能性。

混合HTML 5 /本地产品推理:如果我有一个应用程序,至less需要在iOS / Android上,是不是一个需要完全自定义的经验,需要在应用程序商店的应用程序,因为坦率地说,广告客户对购买应用程序感到兴奋,而移动networking几乎没有被他们的雷达,混合方法可能是我最好的候选人。 就像HTML 5一样,构build一个移动网站便宜很多,然后聘请一位本地开发人员在iOS / Android / Windows上为您构build一个快速应用程序包装。 除此之外,您需要做的只是调整HTML部分,创build一个新的实例,并且有一个移动网站作为奖励!

其中一个危险是,如果HTML 5没有多less响应,或者被locking到320×480和1028×768,随着不同大小的平板电脑出现,您将不得不制作大量的站点实例并检测useragent,这是耗时的和一个维护噩梦。 当发生这种情况时,它通常会被重build为一个响应站点,它本来应该放在首位。

原生的技术推理:我希望这个应用程序能够完全按照我想要的方式在一个平台上运行,我需要访问专有和复杂的设备function。 这个应用程序需要执行非常复杂的操作,使用大量的内存,是一个非常自定义的应用程序与许多自定义UI控制器。 (一些类别包括:3D游戏,像CNN iReport这样重的UGC应用程序和许多实用程序)

本地产品推理:请记住,作为一个产品人,你处理预算和资源几乎总是有限的。 当我上面说Native只对3D游戏有用的时候,我完全理解你也可以用它来做更简单的应用,但是它更加昂贵,可扩展性更差,当处理公司的小预算的时候,感。 如果你擅长编码应用程序,那么无论你select什么,都尽可能采用本地化,这是你的权利,因为所有的花费都是你的时间。 这就是说,这是我使用Native应用程序的主要原因:

原生应用程序赚更多的钱。 有更多的钱。 无论您是大型发行商还是小型开发者,都可以在应用内购买产品,苹果的生态系统在很多方面都能为您服务。 作为一个大型发行商,广告商将会有机会创build可口可乐VH1音乐大奖应用程序,并在大多数情况下为您的发展付出代价! 如果您试图在自定义移动网站上为他们提供几百万次展示,他们可能甚至不会回应(混合方法通常是此问题的一个巧妙桥梁)。 作为一个小开发者,苹果公司为你处理付款,告诉他们所有的用户在应用程序中购买东西是多么的容易(这就是你进入并以9.99美元的价格向用户销售10,000分的价值),是的,他们的麻烦,但你有发行,并设置开始获得检查后释放你的产品很less的努力。

该应用程序需要像素完美和animation像一个梦想。 也许这是一个杂志的应用程序,他们不会容忍任何页面滞后,因为他们认为该应用程序已经被破坏,他们的devise师将在任何不合适的像素上猎杀你。 这可以应用于大多数想要控制用户体验的每个方面的高级品牌的项目。 这不是一件坏事,但它很less见到。

应用程序需要处理来自用户的大量内容,并处理大量专有的CMS系统,或者应用程序本质上是某种平台。

该应用程序是一个需要大量的手机处理器,需要挂钩到操作系统生态系统,以执行其核心function,例如,许多工具(认为android上的appkiller)的自定义体验。

你不关心移动networking或其他平台,而不是你正在开发的平台。 您的一部分用户可能无法访问您的应用,并且您对此感到满意。

TL:DR所有这三个都是非常有用的,当你想使用它们需要从技术,产品,业务和devise的angular度仔细思考。

PhoneGap非常成熟并且得到很好的支持。 您将最终在jQuery mobile中开发您的应用程序,并使用CSS进行devise。 看看这个jQuery Mobile图库 。 所有这些“网站”都可以使用PhoneGap制作成“应用程序”。

您仍然需要一个Apple Developer帐户来编译和部署iPhone和AppStore的应用程序。

你可以使用跨平台的框架。 如果你想本土,那么你可以去titanium框架。 或者,如果你想要移动的webapp,那么你可以去提供跨平台框架的PhoneGap框架。 这将是一个混合应用程序。