2016-07-03 2 views
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) 
      } 
     } 
     }) 
} 
+0

터치 핀 ID의 폴백으로 자신의 핀을 관리하고 사용해야한다고 생각합니다. – Wain

+0

https://developer.apple.com/reference/localauthentication/lapolicy/1514164-deviceownerauthentication – user3441734

+0

그건 도움이 되긴하지만 여전히 그렇습니다. 그걸 어떻게 활용하는지 모르겠다 : / – momonkey

답변

0

불행히도 iOS는 시스템 암호에 대한 입력을 확인하는 수단을 제공하지 않습니다.

touchID가 실패하면 앱에서 자체 비밀번호를 관리해야 할 수 있습니다. This library은 앱이 시스템 UI와 매우 유사한 UI로 비밀번호를 관리 할 수있게하여 사용자가 시스템의 비밀번호로 앱 비밀번호를 설정하도록 유도 할 수 있습니다.

관련 문제