iOS中的本机应用程序可以使用的哪些功能/技术是Web应用程序无法使用的?

时间:2012-02-13 19:17:51

标签: objective-c ios html5 mobile

我正在努力弄清楚我是否应该去当地,或者我是否应该采用针对特定项目的网络应用程序方法。我理解方法的好处和差异。在我看来,最大的问题是,通过使用网络应用程序而不是使用原生应用程序,我将失去访问权限?

我知道WebKit可以处理的某些事情曾经只是本地应用程序的域(即访问地理位置信息)。我也知道添加此功能的不同框架,如PhoneGap。我不是在寻找任何混合应用程序。我在谈论在Safari中运行的应用程序与本机Obj-C之间的差异。

最好是iOS信息,而不是Android信息,但两者都很有趣。

4 个答案:

答案 0 :(得分:3)

  • 核心数据(设备上的数据存储)
  • 相机(自定义调整除外)
  • 加速度计
  • 能够在没有互联网的情况下运行并至少提供一些UI 连接可用
  • iOS App Store分发方法
  • Web Apps必须到服务器查找所有内容(UI,数据等)。 原生应用程序只需要获取新数据和身份验证。这个 通常会导致更慢,更笨拙的用户体验。
  • TableViews和ViewControllers(MVC模型)

我相信还有更多。大约一年前,我和你一样陷入了困境。我决定冒险尝试学习Objective-c所以我可以本地做。我发现这样做所花费的额外时间可以通过本地生成UI的简易性来弥补。定位和渲染非常精确,并且减少了在布局HTML和CSS时通常使用的试错法。

我很高兴我这样做了,我现在可以在一个周末制作一个功能齐全,复杂的网络服务联合应用程序,我需要我的图形艺术家的最小帮助才能做到。

答案 1 :(得分:0)

HTML5对于webapps非常强大,但浏览器中仍然缺少一些API - 例如访问摄像头和麦克风(Device / getUserMedia API仍处于草稿状态)。你可以播放音频,使用加速度计,陀螺仪,地理定位和websockets,但所有这些都是通过javascript处理的。这不错,但这取决于浏览器及其功能。

在原生应用中,您可以使用所有这些传感器,但您必须为每个所需平台(iOS / Android / WinMO)明确实现这些功能。 并且您可以在本机应用程序中使用图形语言(OpenGL)/移动设备尚未支持WebGL(afaik)。原生应用程序可以充分利用硬件的潜力,webapps仅限于浏览器的javascript性能。

答案 2 :(得分:0)

由于安全问题,Web应用程序(或在浏览器上运行的应用程序(webKit Engine))对底层设备功能的访问受限。 因此,他们无法访问许多底层设备功能,如 - - 访问设备联系人列表和存储在设备中的其他敏感信息 - 访问设备硬件 - 如传感器/蓝牙/ wifi等 - 利用底层OS API调用。

因此,根据您的应用程序功能,您必须为您的应用设置最佳设备。

答案 3 :(得分:0)

原生应用程序可以使用预编译的预优化本机ARM代码,以及开发人员驱动的编译提供的好处。需要大量计算的应用程序(游戏物理,音频DSP等)将具有更好的性能,这可能是由于缺乏解释器开销,更多的编译器优化,或者不需要通信开销和将任务卸载到远程服务器的延迟。本机代码虚拟现实创建和类似类型的实时反馈也可能具有较少的延迟。自然代码解决方案产生的较小处理器周期或通信需求也可能会大大减少用户有限的电池寿命。

某些iOS子视图动画只能通过本机代码API实现,或者从JavaScript运行得更顺畅。

用户隐私和安全问题也可能限制或完全限制对Safari网络应用程序中某些用户数据和传感器(相册,麦克风,前置摄像头)的访问,本机应用程序目前可以访问这些应用程序。