iPhone 应用程序 : Webapps or native?

标签 iphone objective-c web-applications iphone-web-app

我计划为我们的在线网络应用程序创建一个 iPhone 应用程序版本。我还是 iPhone 应用程序开发的新手,所以我不知道是选择 iPhone 原生还是在 iPhone 浏览器上运行的网络应用程序。

这个要求其实很基本。 iPhone 应用程序需要提交数据并从 Web 应用程序也使用的数据库中获取数据。用户将对 webapps 具有相同的访问权限,只是我希望这个特定于 iPhone,因为使用 webapps 和 iPhone 应用程序的用户体验会有所不同。我也有兴趣在 Apple store 上销售该应用程序。

根据你的经验,对于这种需求,iPhone native 还是 webapps 哪个更好?构建在 iPhone 浏览器上运行的 native iPhone 应用程序和 Web 应用程序有哪些缺点?另外,我是否仅限于使用 Objective-C 来构建原生 iPhone 应用程序?或者是否有任何其他框架?

请对我温柔一点,我不会挑起争端。

最佳答案

蛋糕你也可以吃。

您可以使用 UIWebView 实例轻松混合 Web 和 native 应用程序,例如在 Cocoa/Objective-C 代码中实现对性能敏感的部分,并在将太耗时而无法重写为原生的部分中插入 WebKit View 。

如果您想要 App Store 分发,您甚至可以将整个 Web 应用程序包装在 native 包中 — 参见 PhoneGap .

如果用户将您的页面添加到他的主屏幕,您还可以开发看起来不像通过 Safari 启动的纯网络应用程序 — 参见 jQTouch .

缺点:

Web 应用程序可能不如 native 应用程序快,但借助 HTML5 离线支持和特定于 WebKit 的扩展(如过渡和动画),您可以走得更远。确保使用 touch events — Safari 延迟 onclick

很难让纯 Web 应用程序感觉像适当的 native 应用程序。例如,移动 WebKit 不支持复制顶部导航栏所需的 position:fixed,并且 web view 的滚动速度与 table view 不同。它是可修复的,但需要 ton的 JavaScript。

优点:

快速发展。当我不得不在 UIView 中复制应用程序时(InterfaceBuilder 只适用于半固定布局),我真的很感激 CSS/HTML 对于复杂布局有多么有用。

你可以保证 Apple 不会突然憎恨和禁止另一件事。如果他们从 AppStore 中删除了您的应用,您可以让用户通过网络访问它(谷歌通过 Voice 和 Latitude 应用做到了这一点)。

将网络应用程序移植到 Android 和其他设备(WinMo、HP Pre、最新的黑莓等)更容易。Apple 排名第一,但它的思想份额与市场份额不成正比。其他公司正在迎头 catch 。

如果选择原生

您必须采用 Apple 的方式:Objective-C 和 Cocoa(您可以使用纯 C 或 C++ 来完成部分应用程序)。关于这个主题的教程和书籍很多,所以我不会在这里重复。只是一些随机的建议:

  • plists 尽管是“原生”iPhone 格式,但并不是客户端-服务器通信的最佳选择。即使按照 XML 标准,XML plist 的开销也很高,而且生成和调试二进制 plist 可能会很痛苦。 JSON实际上更快,通常更容易使用。

  • 如果您只获取少量信息,NSConnection 只会让事情变得复杂。您可以在通过 performSelectorInBackground: 启动的方法中简单地使用 [NSData dataWithContentsOfURL:]

  • UITableView 滚动时不发送通知。如果您想在表格中延迟加载图片,请使用回调加载和设置它们。

关于iPhone 应用程序 : Webapps or native?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2842230/

相关文章:

iphone - 从 Flickr 加载 Retina 显示图像(使用 Three20 TTThumbnailViewController)

ios - 如何在后台插入新项目时在核心数据中分页?

java - Struts2 + Sitemesh + Freemarker 不起作用

ios - 如何更新 NSMutableArray 中的对象?

iphone - 异步进程给我带来了麻烦

python - Web 应用程序中高效的作业进度更新

web-applications - 获取 maven-jetty-plugin 以部署-war 并同时提供外部静态内容

iphone - 触摸移动时拖动图像变慢

iphone - iPad 和 MapKit - 无法拖动可拖动标记

iphone - 在 iPhone 5 的横向模式下启动启动画面