PhoneGapを使用したiPhoneネイティブアプリケーションを開発するにあたり、アプリケーション上で入力させるパスワードなどの情報はあまりローカル/Webストレージ上に保存したくないところ。このような場合はiOS側で用意されているキーチェーンを利用する。PhoneGap開発者のひとりであるShazron Abdullah氏が自身のブログにてPhoneGapでiOS Keychain for Pluginを活用する方法を紹介している。

おもな手順は次のとおり。

  1. phonegap-pluginsをダウンロード
  2. 使用したいプロジェクトの「Frameworksグループ」に"既存のフレームワーク - Security.framework"を追加
  3. 使用したいプロジェクトの「Plugins」に"SAiOSKeychainPlugin.h"と"SAiOSKeychainPlugin.m"の2ファイルを追加
  4. 使用したいプロジェクトの「www」に"SAiOSKeychainPlugin.js"を追加
  5. 必要なコードを追加する (サンプルはphonegap-phonegap-plugins/iPhone/Keychain/KeychainPlugin-Host/www/index.html)

フレームワークファイル追加後の構成図は次のとおり。

赤枠部が上記手順にて追加したフレームワークおよびファイル

実際にサンプルファイル(index.html)をもちいてビルドと実行をおこなう。

サンプルファイルを使用してビルド。ボタンをタップすることでキーの取得/格納/削除がおこなえる

iOS Keychain Plugin for PhoneGapのメソッドは次のとおり(SAiOSKeychainPlugin.jsより)。

メソッド 引数 概要
window.plugins.keychain.getForKey() key, servicename, onSuccess, onFail 値を取得する
window.plugins.keychain.setForKey() key, value, servicename, onSuccess, onFail 値を格納する
window.plugins.keychain.removeForKey() key, servicename, onSuccess, onFail キーを削除する
引数 内容
key キー名を指定
value キーに格納する値を指定
servicename キーチェーンに登録するサービス名を指定
onSuccess 処理成功時に実行する関数を指定
onFail 処理失敗時に実行する関数を指定

iOS Keychain for Pluginを活用すれば簡単なJavaScriptコードでiOSのキーチェーンを利用できるようになる。PhoneGapで外部Webサービスを利用するアプリケーションを開発する場合はぜひ覚えておきたいプラグインだ。このほかにもPhoneGapには

  • iPhone用: PayPalPlugin, Badge
  • Android用: BarcodeScanner

など、魅力的なプラグインが用意されている。開発前にひととおりチェックしておこう。

Objective-CやJavaに精通していないデベロッパでも、HTML+CSS+JavaScriptで簡単にスマートフォン向けのアプリケーション開発が可能になるPhoneGap。ただWebアプリケーションをネイティブアプリ化するだけではなく、端末の機能をJavaScriptで 容易に操作できるようになっている点も嬉しいところ。各デバイス向けのチュートリアルも充実しており、驚くほどスピーディなアプリケーションの開発が可能だ。ちょっとしたアプリケーションから、デバイスの機能を活用したアプリケーションを開発したい場合に検討してみてはいかがだろうか。