我是一名网络开发人员,我想把我的网络产品搬到iPhone上。其中一个产品就像谷歌Maps:在手机屏幕上显示地图,您可以拖动或调整地图的大小,并查看我们添加到地图的一些信息。

我知道有一些技术可以让你使用HTML、CSS和Javascript来开发原生iPhone应用。我列举了一些:

Ansca移动 PhoneGap Appcelerator

还有其他类似的产品吗?它们之间有什么区别?我该选哪一个呢?


当前回答

我对PhoneGap的理解是他们为很多iPhone api提供Javascript api。

对于有web开发背景的人来说,Titanium似乎更容易一些。它是一个简单的XML文件,用于创建一个基本的TabView应用程序,然后内容区域中的所有内容都由HTML / JS控制。我也知道Titanium确实为一些框架提供了一些javascript访问(特别是访问位置信息、电话ID等)。

更新:Titanium在0.8版本的框架中添加了Maps API。

其他回答

我试过corona。它很好,直到我发现它不支持流式mp3音频。 所以,我就停在这里了。我想如果我真的想成为一名iphone应用程序开发人员,我应该学习obj c。我想做一个应用程序,它有一个电台列表,你点击它们,它就开始播放。

在你提到的解决方案中,似乎没有一个能让你直接访问OS 3.0中引入的MapKit框架。

由于谷歌Maps HTML小部件远不如MapKit(参见谷歌Latitude的例子),您可能最好开发一个原生Cocoa触摸应用程序,或者选择一个可以扩展以添加MapKit集成的解决方案。PhoneGap以这种方式是可扩展的(它是开源的,所以默认是),其他一些解决方案可能也是如此。

编辑:Titanium现在支持MapKit

以下是对Appcelerator和PhoneGap的最新深入分析:http://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap

这里有更多关于它们在编程上如何不同的细节: http://savagelook.com/blog/portfolio/phonegap-is-web-based-appcelerator-is-pure-javascript

Rhomobile Rhodes (http://rhomobile.com/products/rhodes)在方法上与PhoneGap非常相似,但它是唯一具有以下功能的框架:

模型-视图-控制器模式(如 大多数web框架提供) 对象关系管理器 支持所有流行的智能手机(包括Windows Phone 7) 托管开发服务(不仅仅是托管构建):http://rhohub.com RhoStudio IDE中的完整调试器和无sdk模拟器 支持同步脱机数据

据我所知,这两者之间有一些不同之处:

PhoneGap basically generates native wrappers for what are still web apps. It spits out a WhateverYourPlatformIs project, you build it, and deploy. If we're talking about the iPhone (which is where I spend my time), it doesn't seem much different from creating a web app launcher (a shortcut that gets its own Springboard icon, so you can launch it like (like) a native app). The "app" itself is still html/js/etc., and runs inside a hosted browser control. What PhoneGap provides beyond that is a bridge between JavaScript and native device APIs. So, you write JavaScript against PhoneGap APIs, and PhoneGap then makes the appropriate corresponding native call. In that respect, it is different from deploying a plain old web app. Titanium source gets compiled down to native bits. That is, your html/js/etc. aren't simply attached to a project and then hosted inside a web browser control - they're turned into native apps. That means, for example, that your app's interface will be composed of native UI components. There are ways of getting native look-and-feel without having a native app, but... well... what a nightmare that usually turns out to be.

两者的相似之处在于,您可以使用典型的web技术(html/js/css/等等等等)编写所有内容,并且您可以通过自定义JavaScript api访问本机功能。

但是,同样,PhoneGap应用程序(PhonGapps?我不知道……这名字蠢吗?说起来容易些——我知道这么多)以网络应用开始他们的生活,以网络应用结束他们的生活。在iPhone上,html/js/等等。只是在UIWebView控件中执行,PhoneGap JavaScript api你的js调用被路由到本地api。

钛应用变成了原生应用——它们只是使用web开发技术开发的。

这到底是什么意思呢?

Titanium应用看起来就像一个“真正的”应用,因为归根结底,它就是一个“真正的”应用。 PhoneGap应用程序看起来像一个托管在浏览器控件中的web应用程序,因为归根结底,它是一个托管在浏览器控件中的web应用程序。

哪一种适合你?

如果你想使用web开发技能编写本地应用程序,Titanium是你最好的选择。 如果你想要使用web开发技能编写一个应用程序,你可以实际部署到多个平台(iPhone、Android、黑莓和其他他们决定包括的平台),如果你想通过统一的JavaScript API访问本机平台功能的子集(GPS、加速计等),PhoneGap可能是你想要的。

你可能会问:为什么我要写一个PhoneGapp(我决定使用这个名字),而不是一个托管在网络上的web应用程序?我是否仍然可以通过这种方式访问一些原生设备功能,同时也拥有真正的web部署的便利,而不是强迫用户下载我的“原生”应用并安装它?

答案是:因为你可以将你的PhoneGapp提交到App Store并收费。你还会看到启动器图标,这让用户更难忘记你的应用(比起应用图标,我更容易忘记书签)。

You could certainly charge for access to your web-hosted web app, but how many people are really going to go through the process to do that? With the App Store, I pick an app, tap the "Buy" button, enter a password, and I'm done. It installs. Seconds later, I'm using it. If I had to use someone else's one-off mobile web transaction interface, which likely means having to tap out my name, address, phone number, CC number, and other things I don't want to tap out, I almost certainly wouldn't go through with it. Also, I trust Apple - I'm confident Steve Jobs isn't going to log my info and then charge a bunch of naughty magazine subscriptions to my CC for kicks.

不管怎样,除了涉及到web开发技术之外,PhoneGap和Titanium是非常不同的——只有表面上的可比。

I hate web apps, by the by, and if you read iTunes App Store reviews, users are pretty good at spotting them. I won't name any names, but I have a couple "apps" on my phone that look and run like garbage, and it's because they're web apps that are hosted inside UIWebView instances. If I wanted to use a web app, I'd open Safari and, you know, navigate to one. I bought an iPhone because I want things that are iPhone-y. I have no problem using, say, a snazzy Google web app inside Safari, but I'd feel cheated if Google just snuck a bookmark onto Springboard by presenting a web app as a native one.

我得走了。我女朋友脸上有一种"拜托你别再用电脑三秒钟"的表情。