JavaScriptTweetこんにちは、橋本です。今日はCordova(PhoneGap)のプラグインの作り方について書いていきたいと思います。Javascriptを組み合わせて、iOSやAndroidのネイティブアプリが作れるというものです。Cordovaで用意されたJavascriptのAPIを用いることで、ネイティブの機能を使用することができるようになっています。「HTML、CSS、Javascriptでネイティブアプリが作れるとは!ネイティブの機能も使えるし!これはお手軽!!素晴らしい!!!」と、思うかもしれませんが、Cordovaの内部では、ネイティブのWebviewの上でHTMLを動かし、JavascriptのAPIを通じて予め用意されたネイティブの機能を使っているだけなので、実際にアプリを作り始めると、痒いところに手が届かない場面がしばしばあります。カメラを起動して写真や動画を撮ることはできるのですが、カメラ自体の機能を拡張したり、見た目を変えたりといったことは出来ません。iTunesライブラリへのアクセスや、Bluetoothを使うといったことも、APIが用意されていないので出来ません。Cordovaにはプラグインを組み込む機構が用意されているため、Objective-CやJavaを使ってネイティブコードでプラグインを作ることで、機能を追加することができるようになっています。いうわけで、今回はiOSの場合を例にプラグインの作り方をご紹介したいと思います。プラグインを作成するためには、ネイティブのコードと、それをjavascriptから実行するためのjavascriptコードを記述する必要があります。ネイティブコードを作成するというわけで、まずCordovaプロジェクトのPluginsフォルダの中に、Objective-Cのclassファイルを作成します。このクラスは、CDVPluginクラスの子クラスとして作成してください。新規ファイルを作成したら、まずは「.h」ファイルを開いてください。完成後のソースはこんな感じです。withDict:(NSMutableDictionary*)options;@endまず、初期状態ではがインポートされているかと思いますが、これをに修正します。次に、NSString型のcallbackIdというプロパティを定義します。これは、javascript側から渡されてくるIDを格納しておくためのプロパティで、javascriptに処理の実行結果を返すときに必要になります。(プロパティ名はcallbackIdでなくても構いません。)次に、メソッドを定義しています。withDict:(NSMutableDictionary*)options;」というメソッドを定義しました。argumentsとoptionsはどちらも、javascriptから渡される引数なのですが、javascript側から渡した引数の配列の中で、オブジェクトはoptionsに連想配列として渡され、文字列や数値の場合には配列に値が入ってきます。次に「.m」ファイルを開いてメソッドを実装していきたいと思います。完成後のソースはこんな感じです。writeJavascript:ret];}@endまず、optionsの一つ目の値としてコールバック用のIDが格納されているので、それをcallbackIdプロパティに格納しています。次にjavascriptから渡される引数をname変数に格納し、その有無で処理を切り分けています。CDVPluginResultクラスは、処理結果を作成するためのクラスで、処理結果とステーテスコードを渡して作成します。CDVPluginResultのtoSuccessCallbackStringメソッドや、toErrorCallbackStringメソッドを使うことで、javascriptで定義したコールバック関数を叩くための文字列を作成することができます。これらのメソッドには、javascriptから渡されたコールバックIDを指定する必要があります。最後に、writeJavascriptメソッドで、作成した結果の文字列をJavascriptとして実行して完了です。プラグインの作成が完了したら、このプラグインを実際に使用可能にするために、「Cordova.plist」に登録する必要があります。具体的には、Cordova.plistのPluginsというDictionaryの中にキーと値を記述します。キーには、javascript側から呼ぶための名前を記述し、値にはプラグインのクラス名を記述します。今回は、キーに「jp.co.asial.hello」と記述し、値に「PGMyPlugin」と記述しました。ネイティブ側はこれで完了です。Javascriptを作成する次に、プラグインを呼ぶためのjavascriptコードを書いていきます。完成後のソースはこんな感じです。</script></body></html>javascript側からネイティブのプラグインを呼ぶためには、Cordova.exec()メソッドを使用します。メソッドの引数は、1つ目から順に、成功時のコールバック関数、失敗時のコールバック関数、Cordova.plistの「キー」に記述した値、呼びたいプラグインのメソッド名、引数の配列となります。このように、プラグインが実行されていることが確認できるかと思います。今回は、この簡単なサンプルだけだと物足りないかと思い、iTunesMusicLibraryから音楽を取得するプラグインを作成してみましたので、こっちもよろしければ見てみてください。ArtworkのExport。MusicファイルのExport。</body></html>ではでは。byスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。