我不想花时间学习Obj-C。我花了7年多的时间做网络应用程序编程。难道不存在使用WebView的方法,只需在javascript中编写整个应用程序,从项目资源中直接提取文件?
答案 0 :(得分:71)
我在搜索后找到了答案。这就是我所做的:
在XCode中创建一个新项目。我想我使用了基于视图的应用程序。
将WebView对象拖到界面上并调整大小。
在您的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]]]; }
现在,您作为项目资源添加的所有文件都可以在您的网络应用中使用。我有一个index.html文件,包括javascript和css以及没有问题的图像文件。到目前为止,我发现的唯一限制是我无法创建新文件夹,因此所有文件都会混淆资源文件夹。
技巧:确保您已将该文件作为资源添加到XCode中,否则该文件将不可用。我一直在XCode中添加一个空文件,然后在finder中将我的文件拖到顶部。这对我有用。
注意:我意识到Obj-C一定不难学。但是因为我已经在JS中存在这个应用程序并且我知道它在Safari中有效,所以对我来说这是一个更快的开发周期。有一天,我确信我必须打破并学习Obj-C。
我发现其他一些有用的资源:
从javascript调用Obj-C:calling objective-c from javascript
从Obj-C调用javascript:iphone app development for web hackers
从应用程序包中读取文件:uiwebview
答案 1 :(得分:22)
在http://www.phonegap.com查看PhoneGap,他们声称可以将JavaScript,HTML和CSS嵌入到原生iPhone应用中。
答案 2 :(得分:7)
对于那些在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” 说明
源码> .databases seq名称文件
0 main /private/var/mobile/Library/WebKit/Databases/Databases.db
源码> .tables
数据库起源
源码> select * from Databases;
1 | http_robertsanders.name_0 | NoteTest |数据库| API示例| 20000 | 0000000000000001.db
源码>从Origins中选择*;
http_robertsanders.name_0 | 5242880
答案 3 :(得分:4)
您可以在不知道任何obj-C的情况下创建应用程序。 QuickConnectiPhone框架允许您执行此操作。查看http://tetontech.wordpress.com了解如何使用它以及其他方式来完成您的要求。
答案 4 :(得分:2)
你应该有一个用Objective C编写的本机包装器。这个包装器可能包含很少的代码行(如10),这些代码行创建WebView并将其导航到Internet中的给定地址(应用程序所在的位置)。但在这种情况下,您的应用程序应该是一个功能齐全的Web应用程序(我的意思是,不仅使用JavaScript,还使用一些HTML进行标记)。
答案 5 :(得分:2)
我遇到了同样的问题。我已经有一个完全用Javascript编写的游戏。我很想制作iPhone友好版本,但是Obj-C是一种矫枉过正的版本。我最终做的是使用WebView指向iphone应用程序的特殊URL。在考虑之后,我想我可以将这些文件移动到app目录并在本地运行。
答案 6 :(得分:2)
使用当前的Apple API无法做到这一点。您最接近的赌注是编写一个嵌入webkit浏览器的简单原生iPhone应用程序。这将允许您在本地浏览您的xhtml / js应用程序。
如果你想存储数据,你需要更进一步,包括一个轻量级的http服务器,它可以为你的应用程序提供服务,并提供存储和检索数据的调用。可能不是一个理想的解决方案,但可能比完整的Obj-C应用程序更少的工作。
作为旁注,Obj-C相当容易学习。 SDK中有大量示例。社区很强大,会毫不犹豫地回答好问题。
答案 7 :(得分:2)
查看有关此问题的新o'reilly book
答案 8 :(得分:1)
我一直在使用phonegap一段时间,它似乎对我来说效果最好。我会在一周左右的时间内发布我的经验,并附上我的应用程序的链接。
答案 9 :(得分:1)
Titanium Mobile也是一个选项 - 它允许您编写可以转换为Objective-C的JavaScript。
答案 10 :(得分:0)
至少有2个人提到了phonegap,但我想我也会发布这个,并提到Apple已经批准了phonegap框架。所以,现在你不会因为你正在使用phonegap而被Apple拒绝了你的应用程序。