私は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に空のファイルを追加してから、Finderでファイルを一番上にドラッグしました。それは私のために働いています。
注:Obj-Cはそれほど難しくないことを理解しています。しかし、このアプリは既にJSに存在し、Safariで動作することがわかっているので、これは私にとってはるかに速い開発サイクルです。いつか、私は壊れてObj-Cを学ばなければならないと確信しています。
私が参考になった他のいくつかのリソース:
JavascriptからObj-Cを呼び出す: javascriptからobjective-cを呼び出す
Obj-CからJavaScriptを呼び出す: Webハッカー向けのiPhoneアプリ開発
アプリケーションバンドルからのファイルの読み取り: iwebview
PhoneGapを http://www.phonegap.com で確認してください。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 /のどこかにデータベースがあります。 Webで開かれたDBのディレクトリもあります。
root#sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db SQLiteバージョン3.5.9手順については「.help」と入力してください
sqlite> .databases seq nameファイル
0 main /private/var/mobile/Library/WebKit/Databases/Databases.db
sqlite> .tables
データベースの起源
sqlite> select * from Databases;
1 | http_robertsanders.name_0 | NoteTest | Database | APIの例| 20000 | 0000000000000001.db
sqlite> select * from Origins;
http_robertsanders.name_0 | 5242880
Obj-Cを知らなくてもアプリケーションを作成できます。 QuickConnectiPhoneフレームワークを使用すると、これを行うことができます。 http://tetontech.wordpress.com をご覧ください。使用方法や、あなたが求めていることを行う他の方法については、こちらをご覧ください。
新しい o'reilly book を見てください
Objective Cでネイティブラッパーを作成する必要があります。このラッパーには、WebViewを作成し、インターネット(アプリケーションが存在する場所)の指定されたアドレスにナビゲートするために必要なコードの行(10など)が含まれます。ただし、この場合、アプリケーションはフル機能のWebアプリケーションである必要があります(つまり、JavaScriptだけでなく、マークアップにHTMLも使用する必要があります)。
私はこの同じ問題に遭遇しました。私はすでに完全にJavascriptで書かれたゲームを持っています。 iPhoneに対応したバージョンを作りたいのですが、Obj-Cはやり過ぎです。私がやったことは、WebViewを使用してiphoneアプリの特別なURLを指すことでした。それについて考えた後、それらのファイルをアプリディレクトリに移動してローカルで実行できると思います。
現在のApple APIを使用してこれを行う方法はありません。Webkitブラウザーを組み込む単純なネイティブiPhoneアプリを作成するのが最も簡単です。これにより、xhtml/jsアプリケーションをローカルで参照できます。
データを保存する場合は、さらに一歩進んで、アプリをサーバーに格納し、データを保存および取得するための呼び出しを提供する軽量のhttpサーバーを含める必要があります。おそらく理想的なソリューションではありませんが、完全なObj-Cアプリよりも作業が少ない可能性があります。
サイドノートとして、Obj-Cはかなり簡単に習得できます。 SDKには多くの例があります。コミュニティは強力で、ためらうことなくよく寄せられた質問に答えます。
私はしばらくの間phonegapを使用してきましたが、私にとっては最高の結果が得られるようです。アプリへのリンクも含めて、1週間ほどで自分の経験を投稿します。
Titanium Mobile もオプションです。Objective-Cに翻訳されるJavaScriptを記述できます。