85

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

4

10 に答える 10

72

あちこち探し回った結果、答えが見つかりました。これが私がやったことです:

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

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

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

  5. トリック: ファイルを XCode のリソースとして追加したことを確認してください。そうしないと、ファイルが使用できなくなります。XCodeに空のファイルを追加してから、ファイルをファインダーの上にドラッグしました。それは私のために働いています。

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

私が役立つと思った他のいくつかのリソース:

JavaScript から Obj-C を呼び出す: JavaScript から Objective- C を呼び出す

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

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

于 2008-09-15T17:07:33.133 に答える
22

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

于 2008-10-22T22:47:56.390 に答える
7

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

于 2008-09-21T23:29:06.930 に答える
4

obj-Cを知らなくてもアプリケーションを作成できます。QuickConnectiPhoneフレームワークを使用すると、これを行うことができます。http://tetontech.wordpress.comをチェックして、それを使用する方法や、あなたが求めたことを行う他の方法を確認してください。

于 2008-10-24T04:12:21.040 に答える
2

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

于 2008-09-15T16:35:17.703 に答える
2

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

于 2008-09-15T16:35:42.477 に答える
2

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

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

補足として、Obj-C はかなり簡単に習得できます。SDK にはたくさんの例があります。コミュニティは強力で、ためらうことなく適切な質問に答えてくれます。

于 2008-09-15T16:36:41.600 に答える
1

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

于 2010-04-05T18:09:58.990 に答える
1

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

于 2009-06-16T20:32:24.260 に答える
0

少なくとも他に 2 人が phonegap について言及していましたが、私もこれを投稿して、Apple が phonegap フレームワークを承認したことを述べたいと思いました。これで、phonegap を使用しているという理由だけでアプリが Apple に拒否されることはなくなりました。

phonegap と Apple に関するブログ投稿 - http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/

電話ギャップホーム

于 2009-12-04T20:52:20.010 に答える