android - 打 'native vs html5'移动应用之战

标签 android iphone ios html

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




9年前关闭。




我是一名 iOS(本地)开发人员,自从 App Store 出现以来一直是。从那时起,我也学习了一些 Windows-Phone 和 Android。我一直注意到通过原生构建 HTML5 网络应用程序的必然趋势,而且它的增长速度似乎比我预期的要快。作为本地开发人员,这让我感到沮丧,因为大多数时候有很多关于本地化的论点,只有少数支持 HTML5(即它是跨平台的!),但后面的几个论点似乎比前者更胜一筹现在更多,有时是无效的原因。

我不相信移动应用程序的“ future ”是 HTML5 和 PhoneGap 之类的工具,这些工具可以跨平台大规模分发。与 native 应用程序相比,网络应用程序的体验总是低于标准,而且最重要的是,很多关于它的神话都在流传。例如,“客户不会为多个平台上的原生开发付费;它太贵了!”这是一个神话,如果许多客户真正了解他们获得的应用程序质量的差异,他们就会为此付费。行业领导者一次又一次地证明了这一点,他们在大多数情况下并不为客户构建网络应用程序。我什至知道当一位 CEO 拿到他们外包的应用程序时发生了一场近乎诉讼,这是一个 PhoneGap/HTML5 应用程序。他(理所当然地)对 promise 提供“应用程序”的公司感到愤怒,并想知道为什么它不像他的其他应用程序那样感觉或响应,从而导致一团糟。

其他误区包括采用 HTML5 路线可以节省大量代码和时间,但事实并非如此。涉及跨设备/平台的测试,更不用说跨这些平台使应用程序运行所涉及的 CSS 和 javascript 数量,通常会导致代码困惑,并且需要花费大量时间来调试相关问题。典型的本地开发人员可以在几个小时内在几个平台上弹出简单的基于列表的导航/详细信息 View ,而构建 HTML5 以“模仿”和伪造完全相同的功能和外观/感觉很可能需要大约相同的时间.此外,走 PhoneGap/HTML5 路线将始终确保您将落后于平台和技术的前沿而不是处于领先地位这一事实呢?

我最大的挫折是,现在似乎一些开发商店有时甚至向客户推荐 PhoneGap/HTML5 方法,因为它具有跨平台的吸引力等,甚至没有真正向客户(有时可能一无所知)解释什么它实际上涉及性能和外观/感觉的差异。

我绝对想跟上时代并为最坏的情况做准备,这就是我扩展学习这些工具的原因,但我只是好奇你们(本地开发人员)是如何处理这种事情的?我一个人在思考这个问题吗?关于如何以合理的方式向人们解释如何做出这个决策过程的任何建议?

在我收到有关此问题的回复之前,请注意,我完全理解有时 Web-app 路线是正确的方法,并且我完全理解有些客户根本不会为原生付费,所以这是很好。我也明白预测表明随着时间的推移 HTML5 应用程序的百分比将继续上升。但是,我只是不同意这种日益增长的心态,即“所有应用程序都应该是 HTML5,我们只是在需要出现(即相机等)。”我个人的观点是它应该是相反的:“所有应用程序都应该是原生的,除非特定的 UI 和功能在 HTML5 中更容易/更快地完成”。公司可以找到能够快速编码并可以访问代码库的本地开发人员,从而使本地开发与通过 Web 应用程序进行的开发速度一样快,甚至快得多。

想法?如果这是此类事情的错误论坛,我提前道歉,但我渴望获得意见和建议。谢谢!
-文森特

最佳答案

这是使用 Native 与 HTML5 的简单案例。从技术上讲,没有什么能阻止基于浏览器的解决方案变得与基于 native 的解决方案一样强大,但它永远不会发生,原因如下:参与的供应商:Apple、Google 和 Microsoft 没有动力实现这一点。想想看。如果他们完全标准化,他们的平台将几乎没有优势。让我们以消息传递为例。你能拥有通过 HTML5 提供的最好的 Apple 或 Android 消息服务吗?当然可以,但是平台供应商为什么要走这条路呢?为什么他们会贬低 iOS SDK 或 Android SDK?所以这真的就像只在移动领域上演的浏览器大战。当浏览器大战开始时,每个人都认为 super 浏览器会出现,但它从未出现,这次也不会出现,因为同样的原因。所以它真的不仅仅是一个技术问题,正如它所描述的那样,开放与封闭。事实上,供应商不会以开放的方式提供他们最新和最好的产品。这是大多数跨平台解决方案落后于供应商版本的原因之一。

另一个例子是对 WebGL 的支持。对 WebGL 的支持花费的时间比它应该的要长得多。一旦有比 WebGl 更好的东西,它将首先以 native 形式提供,然后 WebGL 最终将在所有浏览器和所有主流设备上得到完全支持。但支持永远落后于原生。关键是基于浏览器的将永远落后一步,因为这就是供应商喜欢它的方式。

另请注意,许多应用程序客户认为使用 HTML5 实际上更符合网络/互联网标准,而实际上 native 应用程序像 HTML5 应用程序一样使用 HTTP。这是一种常见的误解,因为大多数 native 应用程序都像 HTML5 应用程序一样通过 HTTP 使用服务访问。唯一的区别是您使用 javascript 与 native 方式处理请求和响应。

安全性是另一个需要考虑的重要问题,有多少安全应用在使用 HTML5?我敢打赌,大多数进行安全交易的应用程序都是原生的,并且有充分的理由。

如果人们可以提供最近在 Android 或 iOS 中发布的功能示例以及 PhoneGap 提供的这些功能的支持级别以及 PhoneGAP 支持这些 sdk 功能的路线图,那将会很有用。换句话说,当新版本的 SDK 出来时,PhoneGAP 并没有锁定,Titanium 也没有。然而,PhoneGap 在我看来是原生解决方案的主要竞争者,因此它与原生解决方案的比较将是最有意义的。我认为将原生 SDK 与跨平台的专有 SDK 进行比较是在浪费时间。这永远不会有足够的吸引力让 PhoneGAP 或 Native 为钱而战。

然而,对于那些对 PhoneGap 感到兴奋的人来说,这是一个警告。内置插件可能存在于您需要的所有平台上,但是如果您需要为 PhoneGap 编写自己的插件怎么办? (您将在 PhoneGAP 中了解 GAP 背后的真实故事)要么是因为您想做一些与现有插件完全不同的事情,要么是因为您想自定义现有插件。这不是一次写入随处部署的场景。您需要为您想要该功能的每个平台编写一个自定义插件。换句话说,您又回到了本地。因此,您最好花时间仔细评估插件(在您要运行 HTML5 应用程序的所有平台上),并确保它们现在和将来都是您需要的。另一方面,没有 PhoneGAP 的 HTML5 非常不稳定,而且有限,你很快就会发现自己重写了 PhoneGAP。

另一点是,一个应用程序确实可以通过多种方式进行交互,其中只有一种方式是使用 HTTP。它还经常需要以最佳方式与设备上的操作系统和资源进行交互。更不用说那些真正不关心使用什么底层技术但基于与大量原生应用交互而有很高期望的用户。

当您运行 HTML5 应用程序时,您实际上是在另一个应用程序(即浏览器)中运行您的应用程序。浏览器应用程序的强大功能取决于平台供应商允许的功能。如果历史可以作为指导,它将会发展,并且会添加更多功能,但永远不会是最佳的,永远不会与所有其他供应商同步,并且出于技术和业务原因,永远不会与底层操作系统和 SDK 同步。

用户想要最好的体验,应该注意的是,虽然你有很多人拥有 Android 设备,很多人拥有 iPhone 和 iPad,但同时拥有两者的人相对较少。换句话说,Android 用户可能不太关心您的应用程序的 iOS 版本,而 iOS 用户可能不太关心您的 Android 应用程序。但用户真正关心应用程序如何在他们选择的平台上运行。他们不希望某些东西在两个平台上都运行一半,因为他们从未在两个平台上都看到过它。用户几乎总是一次在一个平台上体验应用程序。

就定位原生解决方案与 HTML5 而言,我认为这是让决策者认识到,不仅原生开发人员喜欢原生,平台供应商也喜欢原生解决方案,这意味着同步制作更好、质量更高的应用程序随着操作系统的改进。
反过来,这意味着拥有更好的移动体验的快乐应用用户。

关于android - 打 'native vs html5'移动应用之战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476011/

相关文章:

java - 显示当前时间

ios - 在 IOS 8 的 UIActionSheet 中添加 UIPickerView 不起作用

iphone - 横向时如何让 Interface Builder 中的两个 UITextView 正确对齐?

ios - 我如何使用我的 iPhone/iPad 应用程序生成二维码?

android - 我的应用程序图标未在某些设备上显示

android - 应用内结算不起作用 :IAB helper is already set up

javascript - XMLHttpRequest 无法加载 http ://localhost:8088/web/webclient/version_info error in ionic login to odoo server

android - iOS Android 和 windows 推送通知

iOS - 如何设置 anchor 以调整自动调整 CollectionView 单元大小的换行间距

ios - 尝试运行迦太基时出错