代码之家  ›  专栏  ›  技术社区  ›  Joshua Partogi

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

  •  6
  • Joshua Partogi  · 技术社区  · 14 年前

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

    这个要求实际上是相当基本的。iPhone应用程序需要提交数据,并从webapps也使用的数据库中获取数据。用户将拥有对webapps的相同访问权限,但我只希望iPhone具有此权限,因为使用webapps和iphone应用程序的用户体验会有所不同。我也有兴趣在苹果商店上销售这个应用程序。

    根据你的经验,对于这种需求,iPhone本机或webapps有什么更好的选择?构建在iPhone浏览器上运行的本地iPhone应用程序和webapps有什么缺点?此外,我是否仅限于Objective-C来构建本地iPhone应用程序?或者有其他的框架吗?

    请对我温和一点,我不是在发动一场火焰战。

    3 回复  |  直到 14 年前
        1
  •  1
  •   theMikeSwan    14 年前

    如果你想在iTunes应用商店里有一个应用程序,你必须用Objective-C编写它。 这是从iPhoneOS4.0开发者协议中引述的 Daring Fireball . 我强调了最相关的部分。

    3.3.1_ 由苹果公司规定,不得使用 或者调用任何私有API。应用 必须最初写入 ObjuleC、C、C++或JavaScript AS 由iPhone OS Webkit执行 引擎,只有用C写的代码, C++和ObjuleC可以编译 直接链接到文档 API(例如, 链接到的应用程序 通过 中间翻译或 兼容层或工具是 禁止)。

    当然,这不适用于OS 3.1或3.2,而且目前还不知道一旦OS 4.0问世,苹果是否会追溯性地删除任何使用了这些工具的现有应用程序。理论上,如果你能在4.0发布之前成功地将应用程序推出市场,并且你很幸运,那么也许你可以利用PhoneGap之类的东西,但在这一点上花时间使用这些工具似乎真的是一场巨大的赌博。

    也就是说,objective-c不是很难学习,它的主要语法是 [someObject doSomething]; [someObject doSomethingWith:thisObject]; 我对网络开发知之甚少,所以我不能说它的优点或缺点,但如果你在一个网络应用程序中设置了一切,那么你可能会倾向于使用上面提到的混合选项或纯粹基于网络。

        2
  •  6
  •   Kornel    14 年前

    你也可以吃蛋糕。

    您可以使用 UIWebView 实例,例如,在cocoa/objective-c代码中实现性能敏感的部分,并将Webkit视图插入到那些需要花费大量时间才能重写为本机代码的部分中。

    你甚至可以将整个web应用包在本地包中,如果你想要应用商店的分发,请参见 PhoneGap .

    你也可以开发纯网络应用程序 就像它是通过Safari发布的一样,如果用户将您的页面添加到主屏幕,请参见 jQTouch .

    缺点:

    Web应用程序可能不如本机应用程序快,尽管有了HTML5离线支持和WebKit特定的扩展(如转换和动画),您可以走得更远。确保使用 touch events _ onclick .

    很难制作出纯粹的网络应用程序 感觉 像适当的本地应用程序。例如,Mobile WebKit不支持 position:fixed 需要复制顶部导航栏,并且Web视图的滚动速度与表视图不同。它是可修复的,但需要 ton 关于JavaScript的。

    优势:

    快速发展。当我不得不在 UIView S(InterfaceBuilder仅适用于半固定布局)。

    你已经投保了苹果公司突然又恨又禁的另一件事。如果他们从AppStore中删除了你的应用,你可以让用户通过网络访问它(谷歌通过语音和纬度应用实现了这一点)。

    将网络应用程序移植到Android和其他应用程序(WinMo、HP Pre、最新黑莓等)更容易。苹果是排名第一的,但它的精神份额与市场份额并不成正比。其他人正在追赶。

    如果你选择本地

    你必须做苹果的方式:Objtovi-C和COCOA(你可以在普通C或C++中做部分应用)。有很多关于这个主题的教程和书籍,所以我不会在这里重复它们。只是一些随机的建议:

    • 尽管plist是“原生”iPhone格式,但对于客户机-服务器通信来说并不是最好的。即使按照XML标准,XML plist也有很高的开销,并且二进制plist可能难以生成和调试。 JSON 实际上更快,而且通常更容易处理。

    • 如果你只获取一点点信息, NSConnection 只会使事情复杂化。你可以简单地使用 [NSData dataWithContentsOfURL:] 在方法中通过 performSelectorInBackground: .

    • 通知在以下时间未送达 UITableView 正在滚动。如果您希望在表中延迟加载图片,请使用回调加载并设置它们。

        3
  •  1
  •   heckj    14 年前

    PhoneGap Noah提到,这无疑是一条可以用来开发HTML+javascript并将其打包以供发布的路线,同时还可以利用iPhone的许多强大的本地功能。

    其余的都依赖于一些您尚未共享的元素。您希望用户界面/搜索的响应速度和平滑程度如何?这是一个Web应用程序延迟的地方,甚至超过3g,可能会鼓励您寻找一个替代方案,以更快地在本地呈现它(使用所有本地,甚至是Objective-C)。

    其他的地方,听起来不像是在你的道路上,寻找你可能想要做的目标-C直接是较重的图形和动画操作(尽管javascript+canvas和html5是关于让我在那里成为一个骗子),使用相机和/或麦克风录制多媒体,或一些需要合理的东西。大量密集加工。最后一个问题是,你能在哪里完成这项工作?你想在哪里完成这项工作?在服务器上(典型的谷歌风格选择)还是在设备上?