iosswiftiphoneios8touch-id

How to use Touch ID sensor in iOS 8


One of the most things I was excited about iOS 8 was the ability to use fingerprint sensors on the iPhone 5s and later. Unfortunately I cannot find out what is the required framework for that, nor how I can make authentication. Please help me with:

A code sample would be much appreciated.


Solution

  • More complete snippet, swift style:

    func authenticateUser() {
            // Get the local authentication context.
            let context = LAContext()
    
            // Declare a NSError variable.
            var error: NSError?
    
            // Set the reason string that will appear on the authentication alert.
            var reasonString = "Authentication is needed to access your notes."
    
            // Check if the device can evaluate the policy.
            if context.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error: &error) {
                [context .evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: reasonString, reply: { (success: Bool, evalPolicyError: NSError?) -> Void in
    
                    if success {
    
                    }
                    else{
                        // If authentication failed then show a message to the console with a short description.
                        // In case that the error is a user fallback, then show the password alert view.
                        println(evalPolicyError?.localizedDescription)
    
                        switch evalPolicyError!.code {
    
                        case LAError.SystemCancel.toRaw():
                            println("Authentication was cancelled by the system")
    
                        case LAError.UserCancel.toRaw():
                            println("Authentication was cancelled by the user")
    
                        case LAError.UserFallback.toRaw():
                            println("User selected to enter custom password")
                            self.showPasswordAlert()
    
                        default:
                            println("Authentication failed")
                            self.showPasswordAlert()
                        }
                    }
    
                })]
            }
            else{
                // If the security policy cannot be evaluated then show a short message depending on the error.
                switch error!.code{
    
                case LAError.TouchIDNotEnrolled.toRaw():
                    println("TouchID is not enrolled")
    
                case LAError.PasscodeNotSet.toRaw():
                    println("A passcode has not been set")
    
                default:
                    // The LAError.TouchIDNotAvailable case.
                    println("TouchID not available")
                }
    
                // Optionally the error description can be displayed on the console.
                println(error?.localizedDescription)
    
                // Show the custom alert view to allow users to enter the password.
                self.showPasswordAlert()
            }
        }
    

    Source