iOS) KakaoQRcode-클론코딩-FaceID-적용

1 minute read

애플의 Face ID 를 활용한 샘플 프로젝트와 개발자 문서를 정리해봤다.

iOS) Face ID & Touch ID - Biometrics Authentication(생체인식 인증)

자, 이제 카카오톡 QR코드 위젯에 적용해보자.

내용

  • 앱 접근 시 Face ID 를 통해서 인증을 필요로 한다.

스크린샷 2021-09-14 오전 9 57 10

시작하기

🔓 프로젝트 설정

4

🔓 UI 구성

  • 기기에서 Face ID 를 지원하면 Face ID 버튼을 보여줌.

🔓 Face ID 적용

mvvm 패턴에서 Face ID 인증 절차를 가지는 Service 클래스를 만들고 로직을 구성하였다.

  • FaceIDAuthenticationViewController
private func setFaceIDAuthentication() {
        faceIDButton.isHidden = service.checkBiometryTypeFaceID()
        service.loginWithFaceID()
}
  • FaceIDAuthenticationService
import Foundation
import LocalAuthentication

class FaceIDAuthenticationService {
    
    var context = LAContext()
    
    enum AuthenticationState {
        case loggedin, loggedout
    }
    
    var state = AuthenticationState.loggedout
    
    // ✅ 장비가 Face ID 가능한지 묻는 것
    func checkBiometryTypeFaceID() -> Bool {
        return context.biometryType == .faceID
    }
    
    func loginWithFaceID() {
        context.localizedCancelTitle = "Enter Username/Password"

        var error: NSError?
        if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) {

            let reason = "Log in to your account"
            context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: reason ) { success, error in

                if success {

                    // Move to the main thread because a state update triggers UI changes.
                    DispatchQueue.main.async { [unowned self] in
                        self.state = .loggedin
                    }
                } else {
                    print(error?.localizedDescription ?? "Failed to authenticate")
                }
            }
        } else {
            print(error?.localizedDescription ?? "Can't evaluate policy")
        }
    }
}

결과

깃허브

GitHub - 28th-SOPT-iOS-CloneCoding/MiraClone-KimHyunGyu: 🧚 아요 미라클론코딩 김현규

Categories:

Updated: