Embedding Cordova WebView on iOS
Cordova 1.4 からは、 Cordova を iOS アプリケーションの中でコンポーネントとして使用できます。このコンポーネントのコードネームは "Cleaver" です。
Cordova 1.4 以降の Xcode テンプレートを用いて作られた新しい Cordova バースのアプリケーションは Cleaver を使用し、このテンプレートは Cleaver の参照実装と捉えられます。
通常は、以下の Cordova.framework の手順に従ってください。 CordovaLib サブプロジェクトの手順は、 Cordova のコアデベロッパーもしくはカスタム CordovaLib のあるユーザ向けとなっています (コアのデバッグを容易にするため)。
必要なもの
- Cordova 1.4.1 またはそれ以降
- Xcode 4.2 またはそれ以降
Cordova.plistファイル
Xcode プロジェクトへの Cleaver の追加 (Cordova.framework)
Cordova.plistファイルをディスクのプロジェクトフォルダー内に コピー しますCordova.plistファイルを Xcode の Project Navigator に ドラッグアンドドロップ します- "Create groups for any added folders" のラジオボタンを 選択 します
- Option-Command-A キーを押します。ファイルをプロジェクトに追加するためのドロップダウン画面 ("Add Files..." 画面) が開きます。 "Created groups for any added folders" のラジオボタンが選択されていることを確認します
- Shift-Command-G キーを押します。フォルダー移動のための別のドロップダウン画面 ("Go to the folder:" 画面) が開きます
/Users/Shared/Cordova/Frameworks/Cordova.frameworkと入力し、 "Go" ボタンをクリックします- "Add Files..." 画面 で "Add" ボタンをクリックします
- Project Navigator で
Cordova.frameworkを選択します - File Inspector を開くため、 Option-Command-1 キーを押します
- Location のドロップダウンメニューのため、 File Inspector から "Absolute Path" を選択します
- Project Navigator の Project アイコン をクリックし、 Target を選択し、 "Build Settings" タブを選択します
- "Link Binaries with Libraries" を展開します
"+" ボタン をクリックし、以下の framework を追加します (オプションで、 Project Navigator の中でこれらを Frameworks グループに 移動 します):
AddressBook.framework AddressBookUI.framework AudioToolbox.framework AVFoundation.framework CoreLocation.framework MediaPlayer.framework QuartzCore.framework SystemConfiguration.framework MobileCoreServices.framework CoreMedia.framework
Xcode プロジェクトへの Cleaver の追加 (CordovaLib サブプロジェクト)
Cordova.plistファイルをディスクのプロジェクトフォルダー内に コピー しますCordova.plistファイルを Xcode の Project Navigator に ドラッグアンドドロップ します- "Create groups for any added folders" のラジオボタンを 選択 します
- Option-Command-A キーを押します。ファイルをプロジェクトに追加するためのドロップダウン画面 ("Add Files..." 画面) が開きます。 "Created groups for any added folders" のラジオボタンが選択されていることを確認します
- Shift-Command-G キーを押します。フォルダー移動のための別のドロップダウン画面 ("Go to the folder:" 画面) が開きます
~/Documents/CordovaLib/と入力し、 "Go" ボタンをクリックします- "Add Files..." 画面 で
VERSIONファイルを選択します - "Add Files..." 画面 で "Add" ボタンをクリックします
- Option-Command-A キーを押します。ファイルをプロジェクトに追加するためのドロップダウン画面 ("Add Files..." 画面) が開きます。 "Created groups for any added folders" のラジオボタンが選択されていることを確認します
- Shift-Command-G キーを押します。フォルダー移動のための別のドロップダウン画面 ("Go to the folder:" 画面) が開きます
~/Documents/CordovaLib/CordovaLib.xcodeprojと入力し、 "Go" ボタンをクリックします- "Add Files..." 画面 で "Add" ボタンをクリックします
- Project Navigator で
CordovaLib.xcodeprojを選択します - File Inspector を開くため、 Option-Command-1 キーを押します
- Location のドロップダウンメニューのため、 File Inspector から "Relative to CORDOVALIB" を選択します
- Project Navigator の Project アイコン をクリックし、 Target を選択し、 "Build Settings" タブを選択します
- 検索フィールドに "Header Search Paths" と入力します
- "Header Search Paths" の値に
$(CORDOVALIB)/Classesを追加し、 Recursive チェックボックス (このチェックボックスはラベルがない可能性があります) にチェックします - "Other Linker Flags" の値に
-all_loadと-Obj-Cを追加します - Project Navigator の Project アイコン をクリックし、 Target を選択し、 "Build Phases" タブを選択します
- "Link Binaries with Libraries" を展開します
"+" ボタン をクリックし、以下の framework を追加します (オプションで、 Project Navigator の中でこれらを Frameworks グループに 移動 します):
AddressBook.framework AddressBookUI.framework AudioToolbox.framework AVFoundation.framework CoreLocation.framework MediaPlayer.framework QuartzCore.framework SystemConfiguration.framework MobileCoreServices.framework CoreMedia.framework"Target Dependencies" を展開します。 (もしこのラベルのボックスが複数ある場合は、一番上のものを選んでください)
"+" ボタン をクリックし、
CordovaLibビルドプロダクトを追加します"Link Binaries with Libraries" を展開します。 (もしこのラベルのボックスが複数ある場合は、一番上のものを選んでください)
"+" ボタン をクリックし、
libCordova.aを追加します
CordovaLib サブプロジェクトへの新規クラスの追加
通常、もし既存の CordovaLib クラスだけを編集したりデバッグするだけならば 上のステップに問題はありません。しかし、もし新しいクラスを追加している場合、 次の追加ステップが必要になります:
- Xcode のプロジェクトの Frameworks ディレクトリから
Cordova.frameworkを削除します。 - ステップ18から20までを再度行います。 dependencies や libraries が プロジェクトの Target の Build Phases の中の一番上のボックス であることを確認してください。
- プロジェクトの Target の Build Settings で、 "Other Linker Flags" を
検索します。
-Obj-Cと-all_loadをこれに追加します。
コード中での CDVViewController の使用法
Cordova.frameworkを使用している場合、この header を追加します:#import <Cordova/CDVViewController.h>CordovaLibサブプロジェクトを使用している場合、この header を追加します:#import "CDVViewController.h"新しい
CDVViewControllerのインスタンスを作成し、どこかで保持します:CDVViewController* viewController = [CDVViewController new];(オプション)
wwwFolderNameプロパティーをセットします (デフォルトは"www"):viewController.wwwFolderName = @"myfolder";(オプション)
startPageプロパティーをセットします (デフォルトは"index.html"):viewController.startPage = @"mystartpage.html";(オプション)
useSplashScreenプロパティーをセットします (デフォルトはNO):viewController.useSplashScreen = YES;view frame をセットします (常にこれを最後のプロパティーとしてセットします):
viewController.view.frame = CGRectMake(0, 0, 320, 480);Cleaver を view に 追加 します:
[myView addSubview:viewController.view];
HTML, CSS, JavaScript ファイルの追加
- 新しいフォルダー を ディスク上の プロジェクト内に作成します。例として名前は
wwwとします - HTML, CSS, JavaScript ファイル をこのフォルダーの中に入れます
- このフォルダーを Xcode の Project Navigator に ドラッグアンドドロップ します
- "Create groups for any added folders" のラジオボタンを 選択 します
CDVViewControllerをインスタンス化するとき、 (1) で作成したフォルダーに 適切なwwwFolderNameとstartPageプロパティーをセット するか、デフォルト値を使用します (前のセクションを参照してください)。/* もし 'myfolder' という名前のフォルダーを作成し、 startPage として 'mypage.html' を 使用したい場合 */ viewController.wwwFolderName = @"myfolder"; viewController.startPage = @"mypage.html"