我不想花时间学习Obj-C。我花了7年以上的时间进行Web应用程序编程。是否应该有一种方法来使用WebView并仅使用javascript编写整个应用程序,然后直接从项目资源中提取文件?
Answers:
我四处搜寻后找到了答案。这是我所做的:
在XCode中创建一个新项目。我想我使用了基于视图的应用程序。
将WebView对象拖到您的界面上并调整大小。
在WebViewController.m(或类似名称的文件,取决于视图的名称)内部,在viewDidLoad方法中:
NSString * filePath = [[NSBundle mainBundle] pathForResource:@“ index” ofType:@“ html”];
NSData * htmlData = [NSData dataWithContentsOfFile:filePath];
如果(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和图像文件,都没有问题。到目前为止,我发现的唯一限制是我无法创建新文件夹,因此所有文件都使资源文件夹变得混乱。
技巧:确保已在XCode中将文件添加为资源,否则该文件将不可用。我一直在XCode中添加一个空文件,然后将我的文件拖到查找器的顶部。那一直在为我工作。
注意:我意识到Obj-C一定不难学习。但是,由于我已经在JS中安装了该应用程序,并且知道它可以在Safari中运行,因此对我来说这是一个更快的开发周期。有一天,我确定我必须分解并学习Obj-C。
我发现其他一些有用的资源:
从JavaScript调用Obj-C:从JavaScript调用Objective-C
从Obj-C调用JavaScript:针对网络黑客的iPhone应用开发
从应用程序捆绑读取文件:uiwebview
在http://www.phonegap.com上查看PhoneGap,他们声称它允许您将JavaScript,HTML和CSS嵌入到本机iPhone应用程序中。
对于在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 /中看到一个数据库。那里甚至还有一个通过网络打开的数据库的目录。
root#sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db SQLite版本3.5.9输入“ .help”以获取说明
sqlite> .databaseseq名称文件
0个主要/private/var/mobile/Library/WebKit/Databases/Databases.db
sqlite> .tables
数据库起源
sqlite>从数据库中选择*;
1 | http_robertsanders.name_0 | NoteTest |数据库| API示例| 20000 | 0000000000000001.db
sqlite>选择* from Origins;
http_robertsanders.name_0 | 5242880
您可以在不知道任何obj-C的情况下创建应用程序。QuickConnectiPhone框架允许您执行此操作。请访问http://tetontech.wordpress.com,以了解如何使用它以及完成您所要求的其他方式。
您应该使用目标C编写本机包装。该包装可能只包含创建WebView并将其导航到Internet(应用程序所在的地址)中给定地址所必需的几行代码(如10)。但是在这种情况下,您的应用程序应该是功能齐全的Web应用程序(我的意思是,不仅使用JavaScript,而且还使用一些HTML进行标记)。
当前的Apple API无法做到这一点。最接近的选择是编写一个嵌入Webkit浏览器的简单本机iPhone应用程序。这样一来,您就可以在本地浏览xhtml / js应用程序。
如果要存储数据,则需要更进一步,并包括一个轻量级的http服务器,该服务器为您的应用提供服务,并提供存储和检索数据的调用。可能对您来说不是理想的解决方案,但可能比完整的Obj-C应用程序少工作。
附带说明,Obj-C非常容易学习。SDK中有大量示例。社区很强大,会毫不犹豫地回答大家提出的问题。
我使用phonegap已有一段时间了,对我来说似乎是最好的结果。我将在一周左右的时间内发布我的经验,同时还会链接到我的应用。
Titanium Mobile也是一种选择-它允许您编写JavaScript,并将其转换为Objective-C。
至少有2个人提到了phonegap,但我想我也应该发布此内容,并提及Apple已经批准了phonegap框架。因此,现在您不会因为使用phonegap而被Apple拒绝您的应用程序。
关于phonegap和Apple的博客文章-http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/