투케이2K

596. (ios/swift5) [간단 소스] LAError 간단 설명 및 사용 옵션 정리 본문

IOS

596. (ios/swift5) [간단 소스] LAError 간단 설명 및 사용 옵션 정리

투케이2K 2024. 12. 1. 21:08

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Swift


- 개발 툴 : Xcode


- 기술 구분 : LAError / Error Code

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[설명 정리]
// --------------------------------------------------------------------------------------

1. LAError 은 LocalAuthentication 프레임워크에서 발생한 오류 에러 코드입니다


2. LAError 사용 가능 지원 범위 : 

  >> iOS 8.0 이상
  >> 아이패드OS 8.0 이상
  >> 맥 카탈리스트 13.1+
  >> 맥OS 10.10+
  >> 비전OS 1.0+
  >> 워치OS 3.0+


3. LAError 오류 특성 : 

  >> static var errorDomain: String : 오류의 기본 도메인입니다.
  >> let LAErrorDomain: String : 프레임워크가 오류를 발행할 때 사용하는 오류 도메인입니다.
  >> var localizedDescription: String : 이 오류에 대한 지역화된 설명을 검색합니다.


4. LAError 오류 코드 : 

  >> static var appCancel: LAError.Code : 앱이 인증을 취소했습니다.
  >> static var systemCancel: LAError.Code : 시스템이 인증을 취소했습니다.
  >> static var userCancel: LAError.Code : 사용자가 인증 대화 상자에서 취소 버튼을 탭했습니다.
  >> static var biometryDisconnected: LAError.Code : 이 장치는 분리형 액세서리를 사용해서만 생체 인식을 지원하지만, 페어링된 액세서리가 연결되어 있지 않습니다.
  >> static var biometryLockout: LAError.Code : 생체 인식 기능이 잠겼습니다. 실패한 시도가 너무 많았기 때문입니다.
  >> static var biometryNotAvailable: LAError.Code : 이 장치에서는 생체 인식 기능을 사용할 수 없습니다.
  >> static var biometryNotEnrolled: LAError.Code : 사용자에게 등록된 생체 인식 정보가 없습니다.
  >> static var biometryNotPaired: LAError.Code : 이 장치는 분리형 액세서리를 사용해서만 생체 인식을 지원하며, 액세서리는 페어링되지 않았습니다.
  >> static var authenticationFailed: LAError.Code : 사용자가 유효한 자격 증명을 제공하지 못했습니다.
  >> static var invalidContext: LAError.Code / static var invalidDimensions: LAError.Code : 이전에 컨텍스트가 무효화되었습니다.
  >> static var notInteractive: LAError.Code : 필수 인증 사용자 인터페이스를 표시하는 것은 금지되어 있습니다.
  >> static var passcodeNotSet: LAError.Code : 장치에 암호가 설정되어 있지 않습니다.
  >> static var userFallback: LAError.Code : 사용자가 인증 대화 상자에서 폴백 버튼을 탭했지만 인증 정책에 대한 폴백을 사용할 수 없습니다.


5. LAError 사용 예시 소스 코드 : 

    @available(iOS 11.0, *) // [특정 IOS 버전 이상 사용 가능]
    private func biometricError(from nsError: NSError) -> (Int, String) {
        
        var retry = 0 // 재실행 여부
        var error = "" // 에러 메시지
        
        switch nsError {
            
        // MARK: [생체 인증에 실패하였습니다. 재실행하시겠습니까?]
        case LAError.authenticationFailed:
            retry = 1
            error = "생체 인증에 실패하였습니다. 재실행하시겠습니까?"
        
        // MARK: [생체 인증 동작을 취소하였습니다. 재실행하시겠습니까?]
        case LAError.userCancel:
            retry = 1
            error = "생체 인증 동작을 취소하였습니다. 재실행하시겠습니까?"
        
        // MARK: [생체 인증 기능이 필요합니다. 재실행하시겠습니까?]
        case LAError.userFallback:
            retry = 1
            error = "생체 인증 기능이 필요합니다. 재실행하시겠습니까?"
            
        // MARK: [기기에서 생체 인식을 사용할 수 없습니다. 권한을 거부하신 경우 확인해주세요.]
        case LAError.biometryNotAvailable:
            retry = 0
            error = "기기에서 생체 인식을 사용할 수 없습니다. 권한을 거부하신 경우 확인해주세요."
        
        // MARK: [등록된 생체 인식 ID가 없습니다. 생체 인증 등록 후 사용해 주세요.]
        case LAError.biometryNotEnrolled:
            retry = 0
            error = "등록된 생체 인식 ID가 없습니다. 생체 인증 등록 후 사용해 주세요."
            
        // MARK: [생체 인증 사용 잠금 (LOCK) 상태입니다. 디바이스에 등록된 생체 인증을 확인 후 다시 실행해주세요.]
        case LAError.biometryLockout:
            retry = 0
            error = "생체 인증 사용 잠금 (LOCK) 상태입니다. 디바이스에 등록된 생체 인증을 확인 후 다시 실행해주세요."
            
        // MARK: [생체 인증 기능 동작이 취소되었습니다. 잠시후 다시 실행해주세요.]
        case LAError.appCancel:
            retry = 0
            error = "생체 인증 기능 동작이 취소되었습니다. 잠시후 다시 실행해주세요."
            
        // MARK: [생체 인증에서 일시적인 문제가 발생하였습니다.]
        default:
            retry = 0
            error = "생체 인증에서 일시적인 문제가 발생하였습니다."
        }
        
        return (retry, error)
    }

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

https://developer.apple.com/documentation/localauthentication/laerror-swift.struct

// --------------------------------------------------------------------------------------

 

반응형
Comments