iOS Swift 4 集成指纹认证功能

指纹认证从 iPhone 5S 开始得到支持,在 App 中进行登录、付款等重要操作时可以通过指纹认证来提高安全性。

在 Swift 中集成指纹认证功能很简单,由以下代码实现:

func authenticateUser() {
let context = LAContext()
var error: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Identification") {
[unowned self] success, authenticationError in
if (success) {
// Do something
}
}
} else {
self.showAlert("Touch ID not available", "Your device is not configured for Touch ID.")
}
}

从代码中可以看到,如果指纹认证成功,程序将会执行 //Do something 处的代码。另外,如果用户的手机不支持指纹认证或者没有启用指纹认证,那么程序会弹窗 "Touch ID not available"

上一段代码调用了 self.showAlert 函数,它的作用就是弹窗报告信息。实现如下:

func showAlert(_ title : String, _ msg : String) {
let alert = UIAlertController(title: title, message: msg, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: NSLocalizedString("OK", comment: "Default action"), style: .default, handler: { _ in }))
DispatchQueue.main.async { [unowned self] in
self.present(alert, animated: true, completion: nil)
}
}

将这两段代码均放在 ViewController 的类定义中即可。

在 iOS 模拟器中第一次运行时可能会报告 "Touch ID not available",将菜单栏的 Hardware –> Touch ID –> Enrolled 选中即可。之后就可以通过 Ctrl + Command + M 来模拟正确的指纹输入,通过 Ctrl + Command + N 来模拟错误的指纹输入。