web-dev-qa-db-ja.com

iPhoneアプリを単なるWebアプリにせずにJavaScriptで完全に作成するにはどうすればよいですか?

私はObj-Cを学ぶのに時間をかけたくありません。私は7年以上、Webアプリケーションプログラミングを行ってきました。 WebViewを使用して、アプリ全体をjavascriptで記述し、プロジェクトのリソースからファイルを直接取得する方法はありませんか?

84
Jeff

あちこち検索して答えを見つけました。これが私がやったことです:

  1. XCodeで新しいプロジェクトを作成します。ビューベースのアプリを使用したと思います。

  2. WebViewオブジェクトをインターフェイスにドラッグして、サイズを変更します。

  3. 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]]]; 
    }
  4. プロジェクトにリソースとして追加したファイルはすべて、Webアプリで使用できます。 javascriptとcssを含むindex.htmlファイルと、問題のない画像ファイルがあります。私がこれまでに見つけた唯一の制限は、すべてのファイルがリソースフォルダーを乱雑にするため、新しいフォルダーを作成できないことです。

  5. 秘::ファイルをXCodeのリソースとして追加したことを確認してください。追加しないと、ファイルは使用できません。 XCodeに空のファイルを追加してから、Finderでファイルを一番上にドラッグしました。それは私のために働いています。

注:Obj-Cはそれほど難しくないことを理解しています。しかし、このアプリは既にJSに存在し、Safariで動作することがわかっているので、これは私にとってはるかに速い開発サイクルです。いつか、私は壊れてObj-Cを学ばなければならないと確信しています。

私が参考になった他のいくつかのリソース:

JavascriptからObj-Cを呼び出す: javascriptからobjective-cを呼び出す

Obj-CからJavaScriptを呼び出す: Webハッカー向けのiPhoneアプリ開発

アプリケーションバンドルからのファイルの読み取り: iwebview

71
Jeff

PhoneGapを http://www.phonegap.com で確認してください。JavaScript、HTML、CSSをネイティブのiPhoneアプリに埋め込むことができると主張しています。

22
Chris Samuels

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

7
Robert Sanders

Obj-Cを知らなくてもアプリケーションを作成できます。 QuickConnectiPhoneフレームワークを使用すると、これを行うことができます。 http://tetontech.wordpress.com をご覧ください。使用方法や、あなたが求めていることを行う他の方法については、こちらをご覧ください。

4
Lee

新しい o'reilly book を見てください

2
cris

Objective Cでネイティブラッパーを作成する必要があります。このラッパーには、WebViewを作成し、インターネット(アプリケーションが存在する場所)の指定されたアドレスにナビゲートするために必要なコードの行(10など)が含まれます。ただし、この場合、アプリケーションはフル機能のWebアプリケーションである必要があります(つまり、JavaScriptだけでなく、マークアップにHTMLも使用する必要があります)。

2
Sergey Mikhanov

私はこの同じ問題に遭遇しました。私はすでに完全にJavascriptで書かれたゲームを持っています。 iPhoneに対応したバージョンを作りたいのですが、Obj-Cはやり過ぎです。私がやったことは、WebViewを使用してiphoneアプリの特別なURLを指すことでした。それについて考えた後、それらのファイルをアプリディレクトリに移動してローカルで実行できると思います。

2
dawnerd

現在のApple APIを使用してこれを行う方法はありません。Webkitブラウザーを組み込む単純なネイティブiPhoneアプリを作成するのが最も簡単です。これにより、xhtml/jsアプリケーションをローカルで参照できます。

データを保存する場合は、さらに一歩進んで、アプリをサーバーに格納し、データを保存および取得するための呼び出しを提供する軽量のhttpサーバーを含める必要があります。おそらく理想的なソリューションではありませんが、完全なObj-Cアプリよりも作業が少ない可能性があります。

サイドノートとして、Obj-Cはかなり簡単に習得できます。 SDKには多くの例があります。コミュニティは強力で、ためらうことなくよく寄せられた質問に答えます。

2
jsapara

私はしばらくの間phonegapを使用してきましたが、私にとっては最高の結果が得られるようです。アプリへのリンクも含めて、1週間ほどで自分の経験を投稿します。

1
shawn

Titanium Mobile もオプションです。Objective-Cに翻訳されるJavaScriptを記述できます。

1
Josh Brown