我曾多次参加会议讨论这个问题。我们是跨平台的吗?还是我们是土生土长的?
我不得不承担这两个结论的后果。我已经开发了15个以上的原生iOS应用程序。我已经开发了2个跨平台的应用程序。(特别是Ionic)。我的结论是…。
跨平台工具是本机工具的一个附加层。因此,您可能会遇到功能实现远远落后的问题。或者有时根本不存在。
硬件功能:与UI渲染类似,在每个平台上访问硬件功能的实现方式不同。最重要的是,同样类型的功能-比如近场通信(NFC)无线电-可能在每个平台上工作不同,或者可能在一个平台上可以访问,但在另一个平台上不能访问。直到最近,苹果才允许第三方应用程序访问iPhone的NFC收音机,然后只以有限的方式;Android很长一段时间以来一直允许不受限制地访问设备的NFC收音机。
使用跨平台工具很麻烦,因为您不知道什么时候会遇到类似上面的问题。你遇到的问题可能会极大地影响你的时间表。
我的一个朋友决定在他最近的应用中使用Ionic。一切都很顺利,直到他不得不在iOS中处理远程通知。Android很简单,但他在iOS上遇到了一大堆问题。他花了两个月的时间才解决了这个问题。一些应该只需要半天的事情。
现在你可能在想,‘这在开发过程中无时无刻不在发生。’这一说法有一定的真实性。但最大的问题是跨平台工具用来与本地平台框架集成的附加技术层。这意味着上述情景上升的机会更多。
在构建本机时,您将直接使用本机库。使用跨平台工具,您需要依赖插件或工具本身来为您访问这些库。
任何增加的技术层都意味着增加的复杂性层。这意味着虫子有更多的机会。而且这些bug更难调试,因为您可能不知道问题出在哪里。是在您的代码中,还是在插件中,还是在与库交互的方式中?
一家公司构建了一个Ionic Web应用程序。他们想发布iOS和Android版本。看起来很简单,因为这个应用程序已经是用Ionic构建的。
首先,我们遇到了Cookie问题,因为iOS13中处理Cookie的方式发生了变化,这个问题需要永远解决。Cookie只是停止工作,没有错误消息来解释发生了什么。不得不停止使用Cookie,但只有在进行了大量研究和失败的尝试之后才停止使用。
我们正在处理可怕的错误消息和静默错误,这一事实加剧了这些问题。为什么?因为在幕后还有额外的技术层面和无数隐藏的魔力在发生。
我们终于把一切都安排好了。在我们花在解决这些问题上的时间里,我写了2个原生iOS应用程序和1个Reaction网站作为副项目。跨平台使该公司花费了更多的时间和金钱。
此外,iOS和Android一直在变化。他们正在添加新功能,并不断更新他们的框架。跨平台工具不得不争先恐后地跟上。
如果iOS做出的更改破坏了跨平台框架中的某些内容,而您必须等待他们更新他们的工具,会发生什么情况呢?
如果您转到StackOverflow,您会发现这是一个问题。这是个杀手。
大多数人选择跨平台是为了节省时间和金钱,同时仍然拥有尽可能广泛的覆盖范围。但正如你从上面的故事中看到的那样,公司采用这种方法并不总是节省时间和金钱。
对于一家初创公司来说,跨平台可能会更加危险。遇到如上所述的问题可能会是一次重大的财务挫折。对于初创企业来说,资金是有限的。
对于你的初创公司来说,最初的目标总是验证一个想法或产品。这可以而且应该在一个平台上完成。
初创公司的存在不是为了赚钱,也不是为了服务客户。他们的存在是为了学习如何建立一个可持续的业务。这一学习可以通过运行实验来科学地验证,这些实验允许我们测试我们视觉的每一个要素。-初创企业plessonslearned.com。
在一个平台上进行更改总是比在两个平台上更容易。我不管你用的是什么工具。将您的注意力分散到多个技术上总是更加复杂。在您的早期阶段,您不希望增加复杂性。增加复杂性会浪费时间和精力。
开始的时候,要保持简单。当您的想法得到验证后,您可以扩展到其他平台。但是不要过早地这么做。
在早期阶段,最重要的是反馈和迭代。您必须能够快速迭代。在两个平台上迭代总是比在一个平台上迭代慢。
与其担心要在所有不同的平台上工作,不如专注于一个平台。从您的用户那里获得反馈,并尽可能快地迭代、迭代、再迭代。征服那个平台。
一旦你建立了一个稳定的具有牵引力的产品,然后扩展。但是,除非您在一个平台上拥有稳定的、经过测试和验证的产品,否则请留在一个平台上。
跨平台并不能保证更少的钱和更少的时间。实际上,有时情况可能正好相反。
支持两个应用程序总是比支持一个应用程序更困难。所以一直呆在一个平台上,直到有意义地转移到另一个平台。
您也永远不知道什么时候会在一个或两个平台上遇到严重的情况。
我知道这听起来像是我在说完全远离跨平台。但事实并非如此。跨平台有它的一席之地。但有时人们太匆忙了,直到为时已晚才意识到自己的错误。
有一些大公司在使用像Reaction Native这样的跨平台工具。(Reaction Native是令人惊叹的,如果你还没有,请查看它)。
但在走这条路之前,请确保你做了大量的调查。不要轻率地一头扎进花更少得到更多的梦想。你可能意识到你正在潜入一个很浅的池子里。
在未来,我会写关于“反应原住民”的优点。我一点也不喜欢Ionic,所以我将来也会写我为什么不喜欢Ionic。