iPhone应用程序:Webapps还是原生的?

Jos*_*ogi 6 iphone web-applications objective-c iphone-web-app

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

这个要求实际上非常基本.iPhone应用程序需要提交数据并从数据库中获取也由webapps使用的数据.用户对Web应用程序具有相同的访问权限,只有我想要特定于iPhone,因为使用webapps和iPhone应用程序的用户体验会有所不同.我也有兴趣在Apple商店出售该应用程序.

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

请温柔地对待我,我没有开始一场火焰战.

Kor*_*nel 6

你可以吃蛋糕,也可以吃.

您可以通过使用UIWebView实例轻松混合Web和本机应用程序,例如在Cocoa/Objective-C代码中实现对性能敏感的部分,并在部分中插入WebKit视图,这些部分过于耗时而无法重写为本机.

如果您想要App Store分发,您甚至可以将整个Web应用程序包装在本机包中 - 请参阅PhoneGap.

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

缺点:

Web应用程序可能没有本机应用程序那么快,尽管有HTML5离线支持和特定于WebKit的扩展(如转换和动画),您可以获得相当远的距离.确保使用触摸事件 - Safari延迟onclick.

很难让纯网络应用程序感觉像适当的本机应用程序.例如,移动WebKit不支持position:fixed复制顶部导航栏,并且Web视图具有与表视图不同的滚动速度.这是可以修复的,但需要大量的JavaScript.

好处:

快速发展.当我不得不在UIViews中复制应用程序时,我非常感谢CSS/HTML对于复杂布局有多么有用(InterfaceBuilder只适用于半固定布局).

你被投保了对苹果突然讨厌和禁止另一件事.如果他们从AppStore中删除您的应用,您可以让用户通过网络访问它(谷歌使用语音和谷歌纵横应用程序进行访问).

将Web应用程序移植到Android和其他人(WinMo,HP Pre,最新的黑莓手机等)更容易.苹果公司排名第一,但它的市场份额与市场份额不成比例.其他人正在追赶.

如果你选择原生

你必须采用Apple的方式:Objective-C和Cocoa(你可以用普通的C或C++来完成部分应用程序).有很多关于这个主题的教程和书籍,所以我在此不再赘述.只是一些随机的建议:

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

  • 如果只获取少量信息,NSConnection则只会使事情变得复杂.您可以简单地使用[NSData dataWithContentsOfURL:]in方法启动performSelectorInBackground:.

  • UITableView滚动时不传递通知.如果你想在表中加载延迟加载的图片,请使用回调加载和设置它们.


the*_*wan 1

如果您想在 iTunes App Store 上拥有应用程序,则必须使用 Objective-C 编写该应用程序。\n这里引用了来自Daring Fireball的 iPhone OS 4.0 开发者协议。我已经突出显示了最相关的部分。

\n\n
\n

3.3.1 \xe2\x80\x94 应用程序只能按照 Apple 规定的方式使用记录的 API,不得使用或调用任何私有 API。应用程序必须最初使用 Objective-C、C、C++ 或 JavaScript 编写,并由 iPhone OS WebKit 引擎执行,并且只有使用 C、C++ 和 Objective-C 编写的代码才可以编译并直接链接到已记录的 API(例如,禁止通过中间转换或兼容层或工具链接到已记录的 API 的应用程序)。

\n
\n\n

这当然不适用于 OS 3.1 或 3.2,目前尚不清楚一旦 OS 4.0 发布,Apple 是否会追溯删除任何使用此类工具的现有应用程序。理论上,如果你设法在 4.0 发布之前推出该应用程序,而且你很幸运,那么也许你可以利用 PhoneGap 之类的东西,但此时花时间使用这些工具似乎是一场很大的赌博。

\n\n

也就是说,Objective-C 确实不难学,它的主要语法是,[someObject doSomething];或者[someObject doSomethingWith:thisObject];我对 Web 开发知之甚少,所以我无法谈论它的优点或缺点,但它您已在网络应用程序中设置了所有内容,您可能希望倾向于上述混合选项或纯粹基于网络。

\n