我计划为我们的在线网络应用程序创建一个 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/