我不想花时间学习 Obj-C。我花了 7 年多的时间做 Web 应用程序编程。难道不应该有一种方法可以使用 WebView 并用 javascript 编写整个应用程序,直接从项目的资源中提取文件吗?
10 回答
我搜索了一圈后找到了答案。这是我所做的:
在 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 = [捆绑包路径]; 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> .databases seq 名称文件
0 主 /private/var/mobile/Library/WebKit/Databases/Databases.db
sqlite> .tables
数据库起源
sqlite> 从数据库中选择 *;
1|http_robertsanders.name_0|NoteTest|数据库|API 示例|20000|0000000000000001.db
sqlite> 从起源中选择 *;
http_robertsanders.name_0|5242880
您可以在不知道任何 obj-C 的情况下创建应用程序。QuickConnectiPhone 框架允许您执行此操作。查看http://tetontech.wordpress.com以了解如何使用它以及执行您所要求的其他方式。
您应该拥有用 Objective C 编写的本机包装器。该包装器可能包含创建 WebView 并将其导航到 Internet 中的给定地址(您的应用程序所在的位置)所需的几行代码(例如 10 行)。但在这种情况下,您的应用程序应该是一个功能齐全的 Web 应用程序(我的意思是,不仅使用 JavaScript,还使用一些 HTML 进行标记)。
我遇到了同样的问题。我已经有一个完全用 Javascript 编写的游戏。我很想制作一个对 iPhone 友好的版本,但 Obj-C 是一种矫枉过正。我最终做的是使用 WebView 指向 iphone 应用程序的特殊 url。经过考虑,我想我可以将这些文件移动到应用程序目录并在本地运行它们。
目前的苹果 API 没有办法做到这一点。您最接近的选择是编写一个嵌入 webkit 浏览器的简单原生 iPhone 应用程序。这将让您在本地浏览您的 xhtml/js 应用程序。
如果你想存储数据,你需要更进一步,包括一个轻量级的 http 服务器,它为你的应用程序提供服务,并提供存储和检索数据的调用。对您来说可能不是一个理想的解决方案,但可能比完整的 Obj-C 应用程序工作量少。
作为旁注,Obj-C 相当容易学习。SDK 中有大量示例。社区很强大,会毫不犹豫地回答提出的问题。
我一直在使用phonegap,它似乎对我来说效果最好。我将在一周左右的时间内发布我的经验,并附上我的应用程序的链接。
Titanium Mobile也是一个选项 - 它允许您编写被翻译成 Objective-C 的 JavaScript。
至少还有 2 个人提到了 phonegap,但我想我也会发布这个并提到 Apple 已经批准了 phonegap 框架。因此,现在您不会因为您使用 phonegap 而被 Apple 拒绝您的应用程序。
关于 phonegap 和 Apple 的博客文章 - http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/