#事前準備
1.プロジェクトから「info」→「Custom iOS Target Properties」に
「Privacy - Face ID Usage Description 」を追加する。
内容はFaceIDの使用を許可するダイアログメッセージに使用される。
2.プロジェクトにLocalAuthetication.frameworkを追加する。
「Build Phases」→「Link Binary With Libraries」→「+」ボタンから追加
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