LoginSignup
1
4

More than 3 years have passed since last update.

Face IDを使ってみた開発メモ(Objective-C編)

Last updated at Posted at 2020-02-20

事前準備

1.プロジェクトから「info」→「Custom iOS Target Properties」に
 「Privacy - Face ID Usage Description 」を追加する。
 内容はFaceIDの使用を許可するダイアログメッセージに使用される。
スクリーンショット 2020-02-20 16.32.42.png

2.プロジェクトにLocalAuthetication.frameworkを追加する。
「Build Phases」→「Link Binary With Libraries」→「+」ボタンから追加
スクリーンショット 2020-02-19 17.57.23.png

3.使用するクラスにimportを追加

import "LocalAuthentication/LocalAuthentication.h"

使用するメソッドの説明

- (BOOL)canEvaluatePolicy:(LAPolicy)policy 
                    error:(NSError * _Nullable *)error;

動かしている端末が指定の生体認証に対応しているかチェックするメソッド。
指定する「LAPolicy」には以下のようなパターンがある。

LAPolicy 内容
LAPolicyDeviceOwnerAuthenticationWithBiometrics 生体認証
LAPolicyDeviceOwnerAuthenticationWithWatch AppleWatchによる認証
LAPolicyDeviceOwnerAuthenticationWithBiometricsOrWatch 生体認証かAppleWatchのいずれかによる認証
LAPolicyDeviceOwnerAuthentication 端末で認証として設定しているいずれかの認証

今回は生体認証が使用できるかどうかをチェックするので
「LAPolicyDeviceOwnerAuthenticationWithBiometrics」を使用する。
「error」は「LAError」で返ってくる。詳細は参考から。

- (void)evaluatePolicy:(LAPolicy)policy 
       localizedReason:(NSString *)localizedReason 
                 reply:(void (^)(BOOL success, NSError *error))reply;

指定した生体認証を行うメソッド。
「localizedReason」には実際に生体認証を行う際のダイアログメッセージとして利用される。
生体認証の成否は「success」でtrue/falseで返ってくる。
こちらも「error」には「LAError」が返ってくる。詳細は参考から。

サンプル

    LAContext *context = [[LAContext alloc] init];
    NSError *authError = nil;

    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError])
    {
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                  localizedReason:@"今回はテストでFaceIDを使用します"
                            reply:^(BOOL success, NSError *error)
         {
             if (success) {
                 NSLog(@"ログインに成功しました");
             } else {
                 NSLog(@"ログイン出来ませんでした。");
             }
         }];
    } else {
        NSLog(@"FaceIDに対応していない端末でした");
    }

参考

公式ドキュメント
https://developer.apple.com/documentation/localauthentication/lacontext?language=objc

LAErrorについて
https://developer.apple.com/documentation/localauthentication/lapolicy/lapolicydeviceownerauthentication?language=objc

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4