我怎样才能完全用JavaScript写一个iPhone应用程序,而不只是一个Web应用程序?
我不想花时间学习Obj-C。 我已经花了7年多时间做Web应用程序编程。 不应该有一种方法来使用WebView,只是写在JavaScript中的整个应用程序,从项目的资源拉的文件?
经过四处寻找,我find了答案。 这是我所做的:
-
在XCode中创build一个新项目。 我想我使用了基于视图的应用程序。
-
将WebView对象拖动到您的界面上并resize。
-
在你的WebViewController.m(或者类似的命名文件,取决于你的视图的名字)里面,在viewDidLoad方法中:
NSString * filePath = [[NSBundle mainBundle] pathForResource:@“index”ofType:@“html”]; NSData * htmlData = [NSData dataWithContentsOfFile:filePath]; if(htmlData){ NSBundle * bundle = [NSBundle mainBundle]; NSString * path = [bundle bundlePath]; NSString * fullPath = [NSBundle pathForResource:@“index”ofType:@“html”inDirectory:path]; [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:fullPath]]]; }
-
现在,您已添加为项目资源的任何文件都可以在您的Web应用程序中使用。 我有一个index.html文件包括JavaScript和CSS和图像文件没有问题。 到目前为止我发现的唯一限制是我无法创build新的文件夹,因此所有文件都将资源文件夹弄乱了。
-
招:确保你已经添加了文件作为资源在XCode或文件将不可用。 我一直在XCode中添加一个空文件,然后在查找器中将我的文件拖到最上面。 这一直在为我工作。
注意:我意识到Obj-C一定不那么难学。 但是因为我已经有了这个应用程序存在于JS,我知道它在Safari的作品,这是一个更快的开发周期对我来说。 有一天,我确信我将不得不分手并学习Obj-C。
我发现一些其他资源有帮助:
从javascript调用Obj-C:从javascript 调用objective-c
从Obj-C调用JavaScript: iPhone黑客应用开发
从应用程序包读取文件: uiwebview
对于那些在iPhone 2.1(也许是2.0)上这样做,你不需要为本地数据存储创build任何特殊的服务。 MobileSafari似乎支持HTML5 / WHATWG SQL数据库API。 这是最近版本的桌面Safari和Firefox所支持的相同的API。
如果您使用的是像Dojo或ExtJS这样的提供存储抽象的工具包,那么您的代码应该可以用于任何现代浏览器,包括MobileSafari。
要testing,请打开iPhone上的http://robertsanders.name/dev/stackoverflow/html5.html 。
如果你打开那个页面然后看一下Jailbroken iPhone的文件系统,你应该在/ private / var / mobile / Library / WebKit / Databases /中的某处看到一个数据库。 甚至还有一个网页打开的数据库的目录。
root#sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db SQLite版本3.5.9input“.help”查看说明
sqlite> .databases seq名称文件
0 main /private/var/mobile/Library/WebKit/Databases/Databases.db
sqlite> .tables
数据库的起源
sqlite> select * from数据库;
1 | http_robertsanders.name_0 | NoteTest |数据库| API示例| 20000 | 0000000000000001.db
sqlite>select*起源;
http_robertsanders.name_0 | 5242880
你可以在不知道obj-C的情况下创build一个应用程序。 QuickConnectPhone框架允许您执行此操作。 看看http://tetontech.wordpress.com如何使用它以及其他方式做你的要求。;
你应该有用Objective C编写的本地包装器。这个包装器可以包含创buildWebView所需的几行代码(如10),并将其导航到Internet中的给定地址(应用程序驻留的地方)。 但在这种情况下,您的应用程序应该是一个function齐全的Web应用程序(我的意思是,不仅使用JavaScript,还使用一些HTML标记)。
我遇到了同样的问题。 我已经有一个完全用Javascript写的游戏。 我很想做一个iPhone友好的版本,但Obj-C是一个矫枉过正的。 我最终做的是使用WebView指向iPhone应用程序的特殊URL。 想过之后,我想我可以将这些文件移动到应用程序目录并在本地运行。
没有办法与当前的苹果API做到这一点。 您最接近的select是编写一个embedded了webkit浏览器的简单的本地iPhone应用程序。 这将让你浏览本地的xhtml / js应用程序。
如果你想存储数据,你需要更进一步,包括一个轻量级的http服务器,服务器上的应用程序,并提供调用来存储和检索数据。 可能不是一个理想的解决scheme,但可能比完整的Obj-C应用程序更less的工作。
作为一个侧面说明,Obj-C相当容易学习。 SDK中有很多例子。 社区是强大的,将毫不犹豫地回答良好的问题。
看看关于这个问题的新奥列利书
我一直在使用phonegap一段时间,它似乎有我最好的结果。 我会在一个星期左右发布我的经验,以及一个链接到我的应用程序以及。
Titanium Mobile也是一个选项 – 它可以让你编写翻译成Objective-C的JavaScript。
至less有两个人提到phonegap,但我想我也会发布这个,并提到苹果已经批准了phonegap框架。 所以,现在你不会因为你使用手机电话而被苹果拒绝了。
关于phonegap和苹果的博客文章 – http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/
电话差距首页