科技行业的开发人员普遍认为混合移动应用程序不如本机应用程序吗?

2023-12-22

在一个大学项目中,我的团队计划开发一款适用于 Android 的云消息应用程序。最初,我们通过研究和使用 Ionic Framework 和 Phonegap 创建混合应用程序来开始开发。

根据到目前为止我们所阅读和了解的内容,我们所理解的混合应用程序开发允许我们使用我们非常熟悉的网络技术(HTML、CSS Javascript)进行编码,而与构建本机应用程序相比,花费的时间要少得多。它还有一个优点是可以在多个平台上运行,只需进行很小的调整。

但随着我们的前进,我们从许多同事和该领域的人们那里得到了一些奇怪的反馈,这些反馈都指向一件事: 对混合应用程序普遍不信任和怀疑。

最终,由于这种反馈以及其他原因,我们决定采用原生应用程序,但它总是困扰我们为什么人们有这样的感觉。


是的,普遍的观点是混合应用程序不如本机应用程序。虽然这对于更熟悉 Web 技术的开发人员来说可能会令人沮丧,但它确实有充分的理由:

  1. 无法与原生组件交互: 虽然插件如cordova-plugin-statusbar存在,使用 Web 技术与本机组件交互和操作本机组件存在限制。我个人遇到的一个重大(且令人沮丧)的问题是,当键盘动画输入时,无法在键盘顶部进行输入。这听起来像是一个不问题,直到您看到一个应用程序,其中这是一个基本功能,例如在 Slack 等聊天应用程序中。
  2. 300毫秒延迟:虽然现代浏览器开始逐步淘汰这个 https://developers.google.com/web/updates/2013/12/300ms-tap-delay-gone-away,混合应用程序上存在的一小部分延迟使应用程序感觉缓慢且非原生。随着越来越多的用户采用诸如以下的解决方法,这个问题变得不再是一个因素FastClick.js https://github.com/ftlabs/fastclick以及一些框架,例如Ionic https://ionicframework.com/默认消除它。
  3. 仇恨者是对的(某种程度上):虽然混合应用程序开发已经取得了长足的进步,但仍然存在原生应用程序中不存在的小故障和滞后功能。屏幕转换、应用程序切换和电池寿命仍然是错误出现的常见领域,并且可能会持续一段时间,即使它们开始变得越来越不引人注目。
  4. 有一些很棒的本机解决方案:使用较新的语言,例如 Apple 的Swift https://swift.org/用本机语言编码变得越来越容易。话虽这么说,诸如此类的工具反应本机 https://facebook.github.io/react-native/由于允许开发人员使用 JavaScript 等友好技术进行编码,但编译为本机代码,因此陷入了 Native 和 Hybrid 之间的灰色地带。

这个故事的寓意是,这实际上取决于对您的特定用例来说重要的是什么。混合应用程序已成为一种可行的选择,不再是令人尴尬的副业。相反,与 Native UX 交互的一些小方面仍然是不可能的,除非使用 Native 应用程序。

总的来说,我建议规划您的项目并确定您的应用程序是否需要本机应用程序的任何优势。使用诸如离子视图 http://view.ionic.io/您可以轻松地将应用程序的基本模型放在一起,并在真实设备上测试混合应用程序是否适合您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

科技行业的开发人员普遍认为混合移动应用程序不如本机应用程序吗? 的相关文章

  • 使用反向无限滚动添加到 ListView 时保持滚动位置

    我正在构建一个类似聊天的 Android 应用程序 类似于环聊 为此 我使用垂直 ListViewstackFromBottom true and transcriptMode normal 该列表按从较旧的消息 顶部 到较新的消息 底部
  • 在 doInBackground 方法中启动活动

    在下面的代码中 我从互联网下载 json 并希望显示在列表中 如果列表为空 则转到另一个活动 但其他活动未启动 没有错误 但没有启动活动 感谢您的帮助 package ir mohammadi android nightly import
  • 如何从另一个应用程序向一个应用程序添加视图

    我的应用程序叫做我的好应用 MyNiceApp 主要只是一个加载视图的核心coreView在主活动中onCreate coreView由用户根据需要下载的其他插件的视图填充 我定义了核心视图上的各个区域 这些区域可以通过 MyNiceApp
  • 枚举 NSString 的最佳方法

    我正在寻找枚举 objc 对象 例如 NSString 的方法 我记得 Xcode4 版本中有一个新功能 它提供了一种新的 enum 方法 但不清楚 有人知道吗 好吧 我自己回答 我想我犯了一个错误 这就是我上面提到的新功能 typedef
  • 横向 xib 显示为纵向

    我有一个视图控制器和单独的纵向和横向笔尖文件 旋转时 我加载相应的笔尖 方法 shouldAutorotateToInterfaceOrientation and willRotateToInterfaceOrientation 接到电话
  • 无法调整 Android React Native 模块中线性布局子项的大小

    完整代码在这里 https github com sbaar ResizableLLRN 这里有关于 java 中正确行为和 React Native 中错误行为的视频 https drive google com file d 0Bxl2
  • 首选项活动中的广告“没有足够的空间来显示广告!需要:<480, 75>,拥有:<432, 1073741823>”

    我试图在偏好活动中展示广告 但它从未出现 Logcat 始终显示消息 没有足够的空间来显示广告 想要 有 这就是我制作广告的方式 我对广告有自定义偏好 public class AdmobPreference extends Prefere
  • 关系上的核心数据属性?

    我刚刚开始使用核心数据 我有一个Headache实体和一个Medication实体 头痛和药物之间存在多对多的关系 当您加重头痛时 您可以选择多种药物 我希望能够指定这些药物的数量 我对 MySQL 更熟悉 您可以在其中创建一个数据透视表
  • 为什么在快速合并两个视频或更改背景音乐后视频变成黑屏?

    在我的 ios 应用程序中 我想合并两个视频并更改背景音乐 我尝试过 对于普通视频来说效果很好 但是 当我选择任何延时视频 然后尝试合并或更改背景音乐时 视频变成全黑屏 对于我的应用程序 我使用 swift 4 2 和 xcode 10 我
  • Android - 具有可序列化对象的 SharedPreferences

    我知道 SharedPreferences 有putString putFloat putLong putInt and putBoolean 但我需要存储一个类型的对象Serializable in SharedPreferences 我
  • Android 简单 TextView 动画

    我有一个 TextView 我想倒计时 3 2 1 发生了事情 为了使其更有趣 我希望每个数字都以完全不透明开始 然后淡出至透明 有没有一种简单的方法可以做到这一点 尝试这样的事情 private void countDown final
  • 如何为工具栏上的溢出菜单中的菜单项设置字体

    我想更改项目的默认字体溢出菜单并设置自定义字体 我尝试添加一个工厂LayoutInflater并在onCreateView 方法我改变了TextView的字体 但这没有用 这是代码 在 onCreateOptionsMenu 内 getLa
  • iOS:如何在 UITabBarItem 中添加下划线

    我正在使用一个应用程序 我需要在其中添加下划线UITabbarItem 所以我想在所选下添加下划线UITabbarItem在默认情况下UITabbarcontroller of iOS 我已经创建了子类UITabbarcontroller但
  • 如何在Webview中保存用户名和密码

    目前 我还在学习Android开发的过程中 所以如果我的这个问题对你来说不太容易理解 请原谅 我创建了一个 Android 应用程序 它使用 RecyclerView 显示一组列表 当用户单击列表中的每个名称时 它会将它们重定向到一组不同的
  • Activity 上的 OnTouchListener 从不调用

    我使用了这段代码 但是当我在运行时单击活动时 它永远不会在 OnTouch 方法中命中 有人可以指导我我做错了什么吗 我需要设置此活动的内容视图吗 实际上我想要用户在执行过程中触摸的活动的坐标 public class TouchTestA
  • 使用 Core Data Swift 对 TableView 和行进行分区

    我在 sqlite 中有两个表 代码由 XCode Generation 生成 class Event NSManagedObject NSManaged var startDate NSDate NSManaged var details
  • RecyclerView 适配器的 Kotlin 泛型

    我正在尝试编写一个通用的 recyclerview 适配器 我找到了几个例子 然而 仍然无法弄清楚如何实现通用适配器 我写的代码是 open abstract class BaseAdapter
  • 如何在对话框中配置自定义按钮?

    这里我有一个自定义对话框 里面有背景 2 ImageButton 问题是 当我尝试为该按钮设置 onclick 侦听器时 程序将返回 NullPointerException 我不知道为什么会发生这种情况 无论如何如何将操作分配给对话框内的
  • 更改 Android 中突出显示文本的颜色

    我不确定这是否可能 也许有人可以纠正我 我在 Android 应用程序中有一个 EditText 视图 该视图在蓝色背景上有白色文本 当选择文本时 通过长按和编辑对话框 我希望突出显示为白色并将文本颜色更改为黑色 令人烦恼的是 似乎没有办法
  • 如何检测文本是否可读?

    我想知道是否有一种方法可以告诉给定的文本是人类可读的 我所说的人类可读的意思是 它有一些含义 格式就像某人写的文章 或者至少是由软件翻译器生成的供人类阅读的文章 这是背景故事 最近我正在制作一个应用程序 允许用户将短文本上传到数据库 在部署

随机推荐

  • 使用“从浏览器中单击”按钮打开客户端的桌面应用程序 - Python/HTML [重复]

    这个问题在这里已经有答案了 我想打开桌面应用程序 例如 记事本 Powerpoint Putty 附上它在共享点上如何工作的图像 随附的示例图像显示了如何通过单击按钮打开 Microsoft Teams 我需要这个精确的复制品 单击 打开
  • Visual Studio 2015 调试并继续

    我们将环境从 Visual Studio 2008 更改为 2015 更新 1 现在我们遇到了一些奇怪的调试行为 当我们遇到断点并更改一些代码并继续时 我们无法再在快速监视或立即窗口中看到某些类型的变量内容 例如数据表 图像 A type
  • 如何测试 PHP 程序? [复制]

    这个问题在这里已经有答案了 有没有办法测试程序代码 我一直在研究 PHPUnit 它似乎是创建自动化测试的好方法 然而 它似乎是面向面向对象的代码 是否有过程代码的替代方案 或者我应该在尝试测试网站之前将网站转换为面向对象 这可能需要一段时
  • System.Text.Json 将字典序列化为数组

    是否可以使用 System Text Json 将字典序列化 和反序列化 为数组 代替 hello world 我需要将我的字典序列化为 key hello value world 最好不必在我的类的字典属性上设置属性 使用 newtons
  • 在Python中的图像中的表格上创建边框

    我有一个图像 其中有一个表格和一些其他数据 我需要为表格绘制边框以分隔每个单元格 My image looks like this What i am trying 1 dilating the image to create contin
  • java读取上传文件的内容

    我知道如何上传文件
  • 如何拦截自定义 HTTP 标头值并将其存储在 Wicket 的 WebSession 中?

    我需要从每个请求中获取特定的自定义 HTTP 标头值并将其放入 WebSession 中 以便以后可以在任何网页上使用它 我相信 Wicket 的方法是使用一个自定义类来扩展具有适当访问器的 WebSession 我的问题是 我需要什么样的
  • Iphone SDK,从 UIImage 创建视频

    我需要根据所选图像创建视频 我有代码它应该可以工作 但在附加缓冲区时给出错误 这就是两种类型图像的保存方式 void imagePickerController UIImagePickerController picker didFinis
  • 多个控制器和指令之间的通信

    我有一个支持 HTML5 Canvas 可视化的指令 该指令具有多种方法来修改可视化的不同部分 问题是具有不同父 子 兄弟关系的多个控制器需要与该指令进行通信 现在我已经将这种非常糟糕的方式连接起来 将事件发送到指令的父控制器 然后将它们广
  • Magento 1.7:在 2 列模板中以全宽显示类别页面上的类别图像

    无法找到运行 Magento 1 7 时此问题的解决方案 上面主栏中显示的类别 我想将其显示在两列上方的页面宽度上 这是一个例子 http www vimodos nl schoenen art sex 92 http www vimodo
  • 在struts 2中调用带参数的方法?

    我在 struts 2 动作类中给出了下面的方法 public String add String boo codes here 我想调用add方法 还有我的struts xml
  • 如何在 PHP 中对数字进行四舍五入

    我经营一个 woocommerce 网站 重量以磅为单位 我需要将它们转换为公斤 我从网站下载了这个脚本 它完成了这项工作 但它设置了带有很多小数的新权重 不知道如何四舍五入 我试图使用round new weight 2 但它没有接受或不
  • 串口未接收到任何数据

    我正在开发需要与 COM 端口交互的程序 通过本次问答了解到 NET SerialPort DataReceived 事件未触发 https stackoverflow com questions 2281618 net serialpor
  • 如何避免用户提交的MySQL数据库存储重复的内容

    我正在创建一个网站 允许用户列出最多 5 家与他们关联的公司 当其他用户搜索这些公司时 与该公司关联的所有用户都会显示在搜索结果中 用户将通过文本输入字段提交这些公司 如何避免用户提交重复的公司 例如 如果UserA提交了一家名为stack
  • 将所有存储过程和函数从一个 SQL Server 一次性复制到另一个 SQL Server 的最简单方法

    我需要将所有存储过程和函数立即从一个 SQL Server 数据库复制到另一个数据库 有可能吗 在 SQL Server Management Studio 中 转到对象资源管理器 找到你的数据库 右键单击它 gt Tasks gt Gen
  • ThreeJS collada 文件未居中

    我是 ThreeJS 的新手 我正在尝试将 collada 文件加载到查看器中 我首先复制 Elf colladaLoader 演示的代码 https trijs org examples webgl loader collada http
  • 使用 OpenCV 进行视频稳定

    我有一个用移动摄像机拍摄的视频 其中包含移动的物体 我想稳定视频 以便所有静止物体在视频源中保持静止 我怎样才能做到这一点OpenCV 即 例如 如果我有两个图像 prev frame 和 next frame 我该如何转换下一帧所以摄像机
  • 在多个画布中无缝绘图

    我正在尝试使用 JS 和 Canvas 元素制作一个简单的绘图工具 我的问题是我想要几个画布 并且用户应该能够在所有画布上画一条线 这是我做的一个小页面
  • 如何比较表中的数据(操作前和操作后)?

    有没有免费的工具或方法可以了解数据库表中发生了什么变化 您可以在更新之前复制一份 CREATE TABLE t2 AS SELECT FROM t1 运行您的更新 然后展示差异 用它来显示更新 SELECT FROM t1 MINUS SE
  • 科技行业的开发人员普遍认为混合移动应用程序不如本机应用程序吗?

    在一个大学项目中 我的团队计划开发一款适用于 Android 的云消息应用程序 最初 我们通过研究和使用 Ionic Framework 和 Phonegap 创建混合应用程序来开始开发 根据到目前为止我们所阅读和了解的内容 我们所理解的混