iOS/Swift + Objective-c

[objective-c] OS 잠금 활성화 여부 조회 (암호, Touch ID(Face ID)

안경 쓴 귀니 2021. 4. 1. 00:45
반응형

아이폰 OS 잠금 활성화 여부 조회하는 방법

아이폰 OS 암호 및 생체인증(Touch ID 및 Face ID)이 등록되어있는지 조회하는 방법이다.

OS 잠금 활성화 여부 조회 시 헷갈리는 부분이 많으니 참고 사항을 꼭 읽어보길 바란다.

알고 나면 간단한 내용이지만, 아이폰을 사용하면서 가볍게 넘어갔다면 모를만한 내용이다.

OS 잠금 활성화란, OS 암호가 설정되어 있으며 사용이 가능한 상태를 말한다.

 

참고 사항

  1. 아이폰에서 암호는 기본 사항이고, 생체인증은 선택 사항이다.
    암호와 생체인증이 모두 등록되지 않은 상태에서 'Touch ID(Face ID) 및 암호' 메뉴 진입하여
    1) '암호 켜기'를 하면 암호 등록이 가능하다.
    2) 하지만 '지문(Face) 추가...'를 하면 생체인증 추가 후 암호까지 등록해야만 생체인증이 추가된다. (암호 설정 시에 취소를 하면 생체인증 추가도 취소된다.)
    쉽게 말해, 암호만 등록하는 것은 가능한데, 생체인증만 등록하는 것은 불가능하다.

  2. '암호 끄기'를 해도 생체 인증 정보가 삭제되지 않는다.
    암호 끄기 시, 암호 정보는 삭제되지만 생체 인증 정보는 삭제되지 않는다.
    하지만, 암호가 등록되지 않은 상태이므로 잠금화면 설정이 불가능하며, 앱에서 잠금 활성화 여부 조회 시 불가능한 상태로 조회된다.

  3. canEvaluatePolicy:error: 결과도 위 사항들이 반영된다.
    - canEvalutePolicy:LAPolicyDeviceOwnerAuthentication: 호출 시 생체인증 등록 여부와 상관없이 암호가 등록되어 있다면 YES 리턴
    - canEvalutePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics: 호출 시 생체인증과 암호가 모두 등록되어 있다면 YES 리턴 (생체인증은 등록되어 있으나 암호가 등록되어 있지 않다면 NO 리턴)

 

사용 API
canEvaluatePolicy:error:

파라미터는 암호와 생체(Touch ID or Face ID)에 맞춰 사용

  • 암호: LAPolicyDeviceOwnerAuthentication
  • 생체:LAPolicyDeviceOwnerAuthenticationWithBiometrics

참고 URL: developer.apple.com/documentation/localauthentication/lacontext/1514149-canevaluatepolicy?language=objc

 

 

사용 방법

#import <LocalAuthentication/LocalAuthentication.h>
LAContext* laContext = [[LAContext alloc] init];
NSError *error = nil;

if ([laContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:&error]) {
    // 암호 등록 상태
} else {
    // 암호 미등록 상태 또는 사용 불가 상태
}
    
if ([laContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
    // 암호 및 생체인증 등록 상태
} else {
    // 암호 또는 생체인증 미등록 상태 or 생체인증 사용 불가 상태
}

 

에러

에러는 비활성화 상태, 암호 미등록 상태 등 다양한 케이스가 있으므로, 아래 링크에서 확인한다.

developer.apple.com/documentation/localauthentication/laerror?language=objc

 

반응형