今回のエンジニアブログ担当の近藤です。
iPhone5sでTouch IDによる指紋認証機能が搭載されました。
そして先日リリースしたiOS8にてTouch IDのAPIが公開されて、指紋認証機能を有したアプリの開発も出来るようになりました。
というわけで、今回はさっそくTouch IDで指紋認証をやってみようと思います。
準備
Xcode6とiOS8をインストールしたTouch IDに対応したiPhoneを用意しましょう。
シミュレーターではさすがに指紋認証をシミュレートする機能はなさそうだったので、実機を使いましょう。
プロジェクト作成
iOS8から新しい言語としてswiftが使えるようになりましたが、今回は従来のObjective-Cを使用します。
ソースコード
#import "ViewController.h" @import LocalAuthentication; @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self authentication]; } - (void)authentication:(id)sender { LAContext *context = [[LAContext alloc] init]; NSError *error; BOOL success; //端末がTouch IDに対応しているか確認 success = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]; if (success) { NSLog(@"Touch IDに対応している端末です"); [self evaluatePolicy]; } else { NSLog(@"Touch IDに対応していない端末です"); return; } } - (void)evaluatePolicy { LAContext *context = [[LAContext alloc] init]; // 指紋認証のダイアログを表示 [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"ロックを解除します" reply:^(BOOL success, NSError *authenticationError) { if (success) { NSLog(@"指紋認証OK!"); UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"指紋認証" message:@"指紋認証に成功しました!" preferredStyle:UIAlertControllerStyleAlert]; [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]]; [self presentViewController:alert animated:YES completion:nil]; } else { NSLog(@"「パスワードを入力」を選択した場合はこっちに処理を書く"); } }]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
解説
LAContextが指紋認証の機能を管理しているクラスの様です。
LAContextのcanEvaluatePolicyメソッドで、使っている端末がTouch IDに対応しているかをチェックします。
端末がTouch IDに対応していたらevaluatePolicyメソッドを呼び出します。
同じくLAContextクラスのevaluatePolicyメソッドで指紋認証をするためのダイアログを表示します。
ホームボタンを触って指紋認証を試してみましょう!
正しい指紋が認識されればダイアログが表示されるはずです。
おまけ
iOS8ではダイアログ表示するときにUIAlertViewは非推奨となったためUIAlertControllerを使いましょう。
Appleのサンプルコード
今回の記事はAppleのサンプルコードを参考に書きました。
サンプルコードはこちら
こんな感じでとっても簡単に指紋認証を行う事が出来ました。
この機能を使えば、電話帳アプリやHealthKitを使用したアプリなど、個人情報を取り扱うアプリでデータを勝手に見られないようにガードさせたり、用途はいろいろあると思います。
セキュリティーの高いアプリが作れるようになりますね。