[iOS] touchID, faceID 정리




    LAContext * context = [[LAContext alloc] init];


기본이 되는 context.

    [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]



생체인식 사용가능 체크. YES면 사용 가능한거. NO면 error데이터가 리턴된다. 

error에 code는 아래와 같다. 

                    case LAErrorPasscodeNotSet: // -5

                        // 폰 암호 비활성화

                        NSLog(@"LAErrorPasscodeNotSet %@", @(error.code));

                        break;

                    case LAErrorInvalidContext:

                        NSLog(@"LAErrorInvalidContext %@", @(error.code));

                        break;

                    case LAErrorBiometryNotAvailable:

                        //faceID 앱 별 사용불가 처리 시.

                        NSLog(@"LAErrorBiometryNotAvailable %@", @(error.code));

                        break;

                    case LAErrorBiometryNotEnrolled:

                        //touchID, faceID 비활성화

                        NSLog(@"LAErrorBiometryNotEnrolled %@", @(error.code));

                        break;

                    case LAErrorNotInteractive:

                        NSLog(@"LAErrorNotInteractive %@", @(error.code));

                        break;


해당 에러 코드는 LAError에서 가져온다. 

canEvaluatePolicy:error: 와 관련있는 코드는 다섯가지 인듯.

제대로 사용하기 위해선 폰 암호가 설정되어있어야하고(touch id와 face id를 사용하기 위한 선조건)

지문 등록 및 face 등록이 되어있어야 한다. 

face ID의 경우 한가지 에러가 더 추가된다. 

LAErrorBiometryNotAvailable 인데, 

face ID는 설정에서 앱별로 사용 여부를 on/off 시킬 수 있다. 

사용여부가 off되어있을때 리턴 에러 코드가 LAErrorBiometryNotAvailable


        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics

                localizedReason:reason

                          reply:^(BOOL success, NSError * authenticationError) {}];


사용시 메소드. 

                    case LAErrorAuthenticationFailed: // 인증실패

                        ALog(@"LAErrorAuthenticationFailed %@", @(error.code));

                        break;

                    case LAErrorUserCancel: // 유저 취소

                        ALog(@"LAErrorUserCancel %@", @(error.code));

                        break;

                    case LAErrorUserFallback: 

                        ALog(@"LAErrorUserFallback %@", @(error.code));

                        break;

                    case LAErrorSystemCancel: // 홈키 입력 같은 시스템 취소

                        ALog(@"LAErrorSystemCancel %@", @(error.code));

                        break;

                    case LAErrorAppCancel// 앱에서 취소

                        NSLog(@"LAErrorAppCancel %@"@(error. code));

                        break;


실패시 에러 코드는 이렇게 되는듯. 대충 변수명으로 구분한지라. 


마지막으로... 

face ID는 info.plist에 Privacy - Face ID Usage Description 도 추가해줘야한다는거.

끝.



덧글

댓글 입력 영역


adsence 160x600