TouchID verification in IOS Swift
TouchID verification
In IOS,Face ID and Touch ID are secure, familiar authentication methods that people trust.
1).LocalAuthentication
The first job is to import the LocalAuthentication to the class/Viewcontroller.
2). LAContext
Need to create an LAContext object , which will provide a UI for evaluating the authentication process.
3). Result Handling
Handling UI based on the result for further process.
Create Separate Class for TouchID Verification - TouchVerify.swift
//
// TouchVerify.swift
// VerifyApp
//
// Created by Betamonks on 21/11/18.
// Copyright © 2018 Betamonks. All rights reserved.
//
import Foundation
import LocalAuthentication
class TouchIDVerify
{
public static var message: String = ""
public static var result = false
public static func verify(onSuccess responseManager: @escaping (_ Result: Bool) -> Void) {
print("Touch ID Verification Function")
let myContext = LAContext()
let myLocalizedReasonString = "Biometric Authentication - Function"
var authError: NSError?
if #available(iOS 8.0, macOS 10.12.1, *) {
if myContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &authError) {
myContext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: myLocalizedReasonString) { success, evaluateError in
DispatchQueue.main.async {
if success {
// User authenticated successfully, take appropriate action
self.message = "Awesome!!... User authenticated successfully"
responseManager(true)
} else {
// User did not authenticate successfully, look at error and take appropriate action
self.message = "Sorry!!... User did not authenticate successfully"
responseManager(false)
}
}
}
} else {
// Could not evaluate policy; look at authError and present an appropriate message to user
self.message = "Sorry!!.. Could not evaluate policy."
responseManager(false)
}
} else {
// device is not supported
self.message = "Ooops!!.. This feature is not supported."
responseManager(false)
}
}
}
Code Usage:
TouchIDVerify.verify(onSuccess: { (Result) in
if(Result)
{
// Success Action
print(Result)
print(TouchIDVerify.message)
}else
{
// Failure Action
print(Result)
print(TouchIDVerify.message)
}
})
You can Call from Button Click @IBAction or viewDidLoad