我打算为我们的在线webapps创建一个iPhone应用程序版本.我还是iPhone应用程序开发的新手,所以我不知道是选择iPhone原生还是在iPhone浏览器上运行的webapps.
这个要求实际上非常基本.iPhone应用程序需要提交数据并从数据库中获取也由webapps使用的数据.用户对Web应用程序具有相同的访问权限,只有我想要特定于iPhone,因为使用webapps和iPhone应用程序的用户体验会有所不同.我也有兴趣在Apple商店出售该应用程序.
根据您的经验,对于这种要求,iPhone原生或webapps会更好吗?构建在iPhone浏览器上运行的本机iPhone应用程序和Web应用程序有哪些缺点?另外,我是否仅限于Objective-C来构建原生iPhone应用程序?或者还有其他任何框架吗?
请温柔地对待我,我没有开始一场火焰战.
你可以吃蛋糕,也可以吃.
您可以通过使用UIWebView
实例轻松混合Web和本机应用程序,例如在Cocoa/Objective-C代码中实现对性能敏感的部分,并在部分中插入WebKit视图,这些部分过于耗时而无法重写为本机.
如果您想要App Store分发,您甚至可以将整个Web应用程序包装在本机包中 - 请参阅PhoneGap.
如果用户将您的页面添加到他的主屏幕,您还可以开发看起来不像是通过Safari启动的纯Web应用程序- 请参阅jQTouch.
Web应用程序可能没有本机应用程序那么快,尽管有HTML5离线支持和特定于WebKit的扩展(如转换和动画),您可以获得相当远的距离.确保使用触摸事件 - Safari延迟onclick
.
很难让纯网络应用程序感觉像适当的本机应用程序.例如,移动WebKit不支持position:fixed
复制顶部导航栏,并且Web视图具有与表视图不同的滚动速度.这是可以修复的,但需要大量的JavaScript.
快速发展.当我不得不在UIView
s中复制应用程序时,我非常感谢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
滚动时不传递通知.如果你想在表中加载延迟加载的图片,请使用回调加载和设置它们.