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

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

Ansca移动 PhoneGap Appcelerator

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


当前回答

你应该学习objective - c和编程原生应用程序。不要依赖这些你以为会让生活更容易的东西。苹果确保最简单的方法就是使用他们的本地工具和语言。对于你的100行javascript,我可以在3行代码中做同样的事情,或者完全不需要代码,这取决于元素。看一些教程——如果你理解javascript,那么objective - c并不难。变通办法很糟糕,苹果可以随时把你的插头拔掉。

其他回答

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

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

我已经使用Titanium一个多星期了,我觉得我对它的弱点有一个很好的感觉。

1)如果你希望在多个平台上使用相同的代码,祝你好运!你会看到一些类似backgroundGradient的东西,直到你发现android版本不支持它。然后不得不恢复使用渐变图像,不妨使用它的两个版本,使代码更容易对吗?

2)很多奇怪的行为,在Titanium android sdk上,你需要理解什么是“沉重”的窗口,只是为了让后退按钮工作,甚至更好的定向事件跟踪。这并不是真正的android平台,这只是Titanium试图让他们的API工作的方式。

3)你被扔在黑暗中,事情会崩溃,你必须开始注释代码,然后当你找到它时,永远不要使用它。有一些明显的错误,比如android上的方向和百分比,已经存在了六个多月了。

4) bug ....有很多bug,它们会被报告,等待几个月,几天就能修复。我很惊讶,在android存在这么多其他问题的情况下,他们竟然还计划发布一个黑莓手机sdk。

5) Titanium Iphone和Titanium Android的javascript引擎完全不同。在android版本,你可以下载远程javascript文件,包括和使用库,如mootools, jquery等。当我发现这一点时,我在天堂,因为我不需要继续编译我的android应用程序。android apk安装过程需要很长时间!Iphone都不可能,而且Iphone版本的javascript引擎更快。

如果你远离很多原生UI部分,例如使用setInterval来检测方向变化,坚持使用渐变图像,忘记后退按钮,创建自己的动画,忘记窗口标题,工具栏和仪表板。你真的可以做一个api,在这两个工作,而不需要大量的重写。但在这一点上,它就像一个网络应用程序一样缓慢。

那么这值得吗?痛苦过后,每一分钟都是值得的。你可以抽象逻辑,只是为每个人构建不同的UI,而不是到处都是。钛合金可以让你的应用变得流畅,感觉非常快。你失去了每个平台强大的布局能力,但如果你想得简单,事情可以在单一语言下完成。

为什么不开发网页应用呢?在入门级市场的android手机上,它生成web视图的速度非常慢,并且消耗了大量的内存,你可以用它来做更复杂的逻辑。

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

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

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

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

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

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.

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