it-swarm.cn

如何在不使用Web应用程序的情况下完全使用JavaScript编写iPhone应用程序?

我不想花时间学习Obj-C。我花了7年多的时间做网络应用程序编程。难道不应该有办法使用WebView,只需在javascript中编写整个应用程序,从项目资源中提取文件?

84
Jeff

搜索后我找到了答案。这就是我所做的:

  1. 在XCode中创建一个新项目。我想我使用了基于视图的应用程序。

  2. 将WebView对象拖到界面上并调整大小。

  3. 在viewDidLoad方法中,在WebViewController.m(或类似命名的文件,取决于视图的名称)内部:

    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]]]; 
    }
  4. 现在,您作为项目资源添加的任何文件都可以在您的Web应用程序中使用。我有一个index.html文件,包括javascript和css以及没有问题的图像文件。到目前为止,我发现的唯一限制是我无法创建新文件夹,因此所有文件都会混淆资源文件夹。

  5. 技巧:确保您已将文件作为资源添加到XCode中,否则该文件将不可用。我一直在XCode中添加一个空文件,然后在Finder中将我的文件拖到顶部。这一直在为我工作。

注意:我意识到Obj-C一定不难学。但是因为我已经在JS中存在这个应用程序并且我知道它在Safari中有效,所以对我来说这是一个更快的开发周期。有一天,我确信我必须打破并学习Obj-C。

我发现其他一些有用的资源:

从javascript调用Obj-C: 从javascript调用objective-c

从Obj-C调用javascript: 针对网络黑客的iphone应用程序开发

从应用程序包中读取文件: uiwebview

71
Jeff

http://www.phonegap.com查看PhoneGap 他们声称它允许您将JavaScript,HTML和CSS嵌入到原生iPhone应用程序中。

22
Chris Samuels

对于那些在iPhone 2.1(可能是2.0)上执行此操作的人,您不需要为本地数据存储创建任何特殊服务。 MobileSafari似乎支持HTML5/WHATWG SQL数据库API。这与最新版本的桌面Safari和Firefox支持的API相同。

如果您使用的是Dojo或ExtJS等提供存储抽象的工具包,那么您的代码应该适用于任何现代浏览器,包括MobileSafari。

要测试,请在iPhone上打开 http://robertsanders.name/dev/stackoverflow/html5.html

如果您打开该页面然后查看越狱iPhone的文件系统,您应该在/ private/var/mobile/Library/WebKit/Databases /中的某处看到一个数据库。甚至还有一个Web打开的DB目录。

root#sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db SQLite版本3.5.9输入“.help”作为说明

sqlite> .databases seq名称文件


0 main /private/var/mobile/Library/WebKit/Databases/Databases.db

sqlite> .tables

数据库起源

sqlite> select * from Databases;

1 | http_robertsanders.name_0 | NoteTest |数据库| API示例| 20000 | 0000000000000001.db

sqlite> select * from Origins;

http_robertsanders.name_0 | 5242880

7
Robert Sanders

您可以在不知道任何obj-C的情况下创建应用程序。 QuickConnectiPhone框架允许您执行此操作。查看 http://tetontech.wordpress.com 了解如何使用它以及其他方式来做你所要求的。

4
Lee

看看新的 o'reilly书 关于此事

2
cris

您应该使用Objective C编写的本机包装器。这个包装器可以包含创建WebView并将其导航到Internet中的给定地址(应用程序所在的位置)所需的几行代码(如10)。但在这种情况下,您的应用程序应该是一个功能齐全的Web应用程序(我的意思是,不仅使用JavaScript,还使用一些HTML进行标记)。

2
Sergey Mikhanov

我遇到了同样的问题。我已经有一个完全用Javascript编写的游戏。我很想制作iPhone友好版本,但是Obj-C是一种矫枉过正的版本。我最终做的是使用WebView指向iphone应用程序的特殊URL。在考虑之后,我想我可以将这些文件移动到app目录并在本地运行它们。

2
dawnerd

使用当前的Apple API无法做到这一点。您最接近的赌注是编写一个嵌入webkit浏览器的简单原生iPhone应用程序。这将让您在本地浏览您的xhtml/js应用程序。

如果你想存储数据,你需要更进一步,包括一个轻量级的http服务器,它可以为你的应用程序提供服务,并提供存储和检索数据的调用。可能不是一个理想的解决方案,但可能比完整的Obj-C应用程序更少的工作。

作为旁注,Obj-C相当容易学习。 SDK中有大量示例。社区很强大,会毫不犹豫地回答好问题。

2
jsapara

我一直在使用phonegap一段时间,它似乎对我有最好的结果。我会在一周左右的时间内发布我的经验,并附上我的应用程序的链接。

1
shawn

Titanium Mobile 也是一个选项 - 它允许您编写转换为Objective-C的JavaScript。

1
Josh Brown

至少有2个人提到了phonegap,但我想我也会发布这个帖子,并提到Apple已经批准了phonegap框架。所以,现在你不会因为你正在使用phonegap而被Apple拒绝了你的应用程序。

关于phonegap和Apple的博客文章 - http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/

Phone Gap Home

0
Neo42