1
다음은 touchId 기능을위한 코드입니다. 나는 아이디와 비밀번호를 입력하지 않고 아이디와 로그인을 확인하기 위해 폰 잠금을 해제하는 데 사용하는 핀 코드를 사용자가 입력하게하는 방법을 원합니다. 하지만 터치 ID가 작동하지 않거나 사용할 수없는 경우에만이 옵션을 사용하기를 원합니다.핀 코드를 사용하여 키 체인에 액세스하는 방법
어떻게 그렇게할까요?
@IBAction func touchIDLogin(sender: AnyObject) {
let authenticationContext = LAContext()
var error: NSError?
//check if device supports touch id, if not show error and stop
guard authenticationContext.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: &error) else{
displayAlert("TOUCH ID ERROR", msg: "This device does not support TouchID", option: false)
return
}
authenticationContext.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, localizedReason: "Verify who you are to login", reply: {[unowned self](success, error) -> Void in
if(success){
//Fingerprint recognized
var stored_pass = ""
var stored_user = ""
stored_pass = (self.my_keychain_wrapper.myObjectForKey("v_Data") as? String)!
stored_user = (NSUserDefaults.standardUserDefaults().valueForKey("username") as? String)!
if(!stored_pass.isEmpty || !stored_user.isEmpty){
PFUser.logInWithUsernameInBackground(stored_user, password: stored_pass, block: { (user, error) -> Void in
//unsuccessful login display error message
if user == nil {
if let error_string = error!.userInfo["error"] as? String{
self.displayAlert("ERROR IN LOGIN", msg: error_string, option: false)
}
}
//successful login
else{
self.performSegueWithIdentifier("dashboard_segue", sender: self)
}
})
}
else{
self.displayAlert("LOGIN ERROR", msg: "No valid login credentials were found", option: false)
}
}
//error check
else{
if let error = error{
let message = self.errorMessageForLAErrorCode(error.code)
self.displayAlert("TOUCH ID ERROR", msg: message, option: false)
}
}
})
}
터치 핀 ID의 폴백으로 자신의 핀을 관리하고 사용해야한다고 생각합니다. – Wain
https://developer.apple.com/reference/localauthentication/lapolicy/1514164-deviceownerauthentication – user3441734
그건 도움이 되긴하지만 여전히 그렇습니다. 그걸 어떻게 활용하는지 모르겠다 : / – momonkey