私はObj-Cを学ぶのに時間をかけたくありません。私は7年以上Webアプリケーションプログラミングを行ってきました。WebViewを使用して、アプリ全体をjavascriptで記述し、プロジェクトのリソースからファイルを直接取得する方法があるべきではありませんか?
回答:
探し回って答えを見つけました。これが私がしたことです:
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]]];
}これで、プロジェクトにリソースとして追加したすべてのファイルをWebアプリで使用できるようになります。javascriptとcssを含むindex.htmlファイルと画像ファイルが問題なくあります。これまでに見つけた唯一の制限は、新しいフォルダーを作成できないため、すべてのファイルがリソースフォルダーを乱雑にすることです。
秘訣:ファイルをXCodeのリソースとして追加したことを確認してください。そうしないと、ファイルは使用できなくなります。XCodeに空のファイルを追加してから、ファイルをファインダーの一番上にドラッグしました。それは私のために働いています。
注:Obj-Cを習得するのはそれほど難しくないはずです。しかし、私はすでにこのアプリをJSに存在させており、Safariで動作することを知っているので、これは私にとってはるかに高速な開発サイクルです。いつの日か、私は分解してObj-Cを学ぶ必要があると確信しています。
私が役立つと思った他のいくつかのリソース:
javascriptからObj-Cを呼び出す:javascriptからobjective-cを呼び出す
Obj-CからJavaScriptを呼び出す:Webハッカー向けのiPhoneアプリ開発
アプリケーションバンドルからのファイルの読み取り:uiwebview
PhoneGapをhttp://www.phonegap.comでチェックしてください。彼らは、JavaScript、HTML、CSSをネイティブiPhoneアプリに埋め込むことができると主張しています。
iPhone 2.1(おそらく2.0)でこれを行う場合は、ローカルデータストレージ用の特別なサービスを作成する必要はありません。MobileSafariは、HTML5 / WHATWGSQLデータベース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.dbSQLiteバージョン3.5.9手順については「.help」と入力してください
sqlite> .databasesseq名ファイル
0メイン/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
obj-Cを知らなくてもアプリケーションを作成できます。QuickConnectiPhoneフレームワークを使用すると、これを行うことができます。http://tetontech.wordpress.comをチェックして、それを使用する方法や、あなたが求めたことを行う他の方法を確認してください。
現在のAppleAPIでこれを行う方法はありません。最も近い方法は、Webkitブラウザーを組み込んだシンプルなネイティブiPhoneアプリを作成することです。これにより、xhtml / jsアプリケーションをローカルで参照できるようになります。
データを保存する場合は、さらに一歩進んで、アプリをサーバー化し、データを保存および取得するための呼び出しを提供する軽量のhttpサーバーを含める必要があります。おそらくあなたにとって理想的な解決策ではありませんが、完全なObj-Cアプリよりも作業が少ない可能性があります。
ちなみに、Obj-Cはかなり簡単に習得できます。SDKにはたくさんの例があります。コミュニティは強力であり、ためらうことなくよく置かれた質問に答えます。
私はしばらくphonegapを使用していますが、それが私にとって最良の結果をもたらしているようです。私のアプリへのリンクも含めて、1週間ほどで私の経験を投稿します。
TitaniumMobileもオプションです。Objective-Cに変換されるJavaScriptを記述できます。
少なくとも他の2人がphonegapについて言及しましたが、私もこれを投稿して、Appleがphonegapフレームワークを承認したと述べたいと思いました。そのため、phonegapを使用しているという理由だけで、アプリがAppleによって拒否されることはありません。
phonegapとAppleに関するブログ投稿-http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/