Obj-C の学習に時間をかけたくありません。私は Web アプリケーションのプログラミングに 7 年以上を費やしてきました。WebView を使用して、アプリ全体を JavaScript で記述し、プロジェクトのリソースからファイルを取得する方法はありませんか?
10 に答える
あちこち探し回った結果、答えが見つかりました。これが私がやったことです:
XCode で新しいプロジェクトを作成します。ビューベースのアプリを使用したと思います。
WebView オブジェクトをインターフェイスにドラッグしてサイズを変更します。
viewDidLoad メソッドで、WebViewController.m (またはビューの名前に応じて同様の名前のファイル) 内:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]; NSData *htmlData = [NSData dataWithContentsOfFile:filePath]; if (htmlData) { NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [バンドルのバンドルパス]; 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
http://www.phonegap.comでPhoneGap を確認してください。彼らは、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をチェックして、それを使用する方法や、あなたが求めたことを行う他の方法を確認してください。
Objective C で記述されたネイティブ ラッパーが必要です。このラッパーには、WebView を作成し、それをインターネット上の指定されたアドレス (アプリケーションが存在する場所) に移動するために必要なコード (10 行など) を含めることができます。ただし、この場合、アプリケーションはフル機能の Web アプリケーションである必要があります (つまり、JavaScript だけでなく、マークアップ用の HTML も使用します)。
私はこの同じ問題に遭遇しました。完全に Javascript で書かれたゲームを既に持っています。iPhone 向けのバージョンを作りたいのですが、Obj-C はやり過ぎです。私がやったことは、WebViewを使用してiPhoneアプリの特別なURLを指すことでした。考えてみると、これらのファイルを app ディレクトリに移動して、ローカルで実行するだけでよいと思います。
現在の Apple API でこれを行う方法はありません。一番近いのは、Webkit ブラウザーを組み込んだ単純なネイティブ iPhone アプリを作成することです。これにより、xhtml/js アプリケーションをローカルで参照できるようになります。
データを保存したい場合は、さらに一歩進んで、アプリをサーバー化し、データを保存および取得するための呼び出しを提供する軽量の http サーバーを含める必要があります。おそらく理想的なソリューションではありませんが、完全な Obj-C アプリよりも作業が少ない可能性があります。
補足として、Obj-C はかなり簡単に習得できます。SDK にはたくさんの例があります。コミュニティは強力で、ためらうことなく適切な質問に答えてくれます。
Titanium Mobileもオプションです。Objective-C に変換される JavaScript を記述できます。
私はしばらく phonegap を使用してきましたが、私にとっては最良の結果が得られているようです。私のアプリへのリンクも含めて、1週間ほどで私の経験を投稿します.
少なくとも他に 2 人が phonegap について言及していましたが、私もこれを投稿して、Apple が phonegap フレームワークを承認したことを述べたいと思いました。これで、phonegap を使用しているという理由だけでアプリが Apple に拒否されることはなくなりました。
phonegap と Apple に関するブログ投稿 - http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/