본문 바로가기

[IOS][SWIFT]

[IOS][SWIFT] FaceID, TouchID 구현해보기!

반응형

안녕하세요 :)

오늘은 소셜로그인에 이어서 인증에 관한 글인데요

 

아이폰을 쓰시면서 항상 마주하던 FaceID, TouchID을

구현해보고 싶어 작성하게 되었습니다!

 

생각보다 어렵지 않아서 금방 해내서 글이 짧을거 같습니다 😅

 

먼저 새로운 앱을 만드시고

info.plist에 생채인증을 사용하겠다는 값을 추가해주셔야 합니다!

 

이렇게 추가해주셔도 되고, 코드로

...
<key>NSFaceIDUsageDescription</key>
	<string>얼굴 좀 보자</string>
...

이렇게 추가해주시면 됩니다! 🥰

 

이제 Framework를 추가해주시면 됩니다!

 

 

사진과 같이 [General] - [Frameworks, Libraries, and Embedded Content]에서

[LocalAuthentication.framwork]를 추가해주시면 됩니다!

 

그럼 이제 코드부분으로 넘어 가실까요? 먼저 전체적으로 한번 보여드리겠습니다!

 

import UIKit
import LocalAuthentication

class ViewController: UIViewController {

    @IBOutlet weak var IDButton: UIButton!
    
    let Context = LAContext()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.canEvaluatePolicy()
        
        let IDtype = Context.biometryType.rawValue
        print("\(Context.biometryType.rawValue)")
        if IDtype == 2{
            IDButton.setImage(UIImage(systemName: "faceid"), for: .normal)
        }else if IDtype == 1{
            IDButton.setImage(UIImage(systemName: "touchid"), for: .normal)
        }else{
            IDButton.isHidden = true
        }
    }
    @IBAction func IDAction(_ sender: Any) {
        Context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "인증하기"){(success, error) in
            print("결과", success, error)
        }
    }
    
    func canEvaluatePolicy() -> Bool{
        let can = Context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil)
        return can
    }
}

완전 간단하시죠?

 

먼저 버튼을 눌렀을 때 기능이 작동하게 하기 위해서 스토리보드를 통해서 버튼을 하나 만들었습니다.

 

먼저 추가했던 LocalAuthentication을 import해주시고!

 

let Context = LAContext()를 통해서 로컬 인증의 값들을 저장해주십니다!

 

여기서 IDtype을 확인하는건 핸드폰이 FaceID가 되는지, TouchID가 되는지 확인하기 위해서입니다!

 

저는 rawValue로 확인했는데

 

biometryType에 들어가보시면 아래와 같이 나와있어서 rawValue로 확인했으며,

 

따로 Type을 맵핑해서 사용하셔도 됩니다!

 

그리고 systemImage중에 faceid와 touchid 이미지가 있다고 해서

 

값에 맞게 버튼의 이미지도 바꿔봤습니다! 😊

 

아 그리고 canEvaluatePolicy 함수는 인증을 할수있는지 true, false값으로 받아드리는걸

먼저 viewdidload에서 선언해야지만 기기를 확인할 수 있습니다!👍

 

마지막으로 ButtonAction을 위와 같이 선언해주시면 됩니다!

 

성공, 실패를 모두 해본 로그창을 한 번 보여드리겠습니다!

 

위에서 확인한듯이 2번은 faceid 디바이스라고 확인했으며,

 

결과가 false일때는 무슨 에러인지 알려주세요 🥰

 

그 뒤에 true일 경우 로그 화면입니다. 마지막으로 실행화면 보시고 글을 마무리 하겠습니다!! :)

 

 

반응형