ios8 SDK向开发者公开了指纹识别功能,允许app对用户身份进行本地验证。使用Touch ID非常简单
1 检查Touch ID 是否可用
2 获得指纹验证结果
使用Touch ID 需要引入LocalAuthentication框架
import LocalAuthentication
在按钮的Touch Up Inside事件中我们首先检查Touch ID功能是否可用:
@IBAction func useTouchIdButtonClicked(sender: AnyObject)
{
//步骤1:检查Touch ID是否可用
let authenticationContext = LAContext()
var error: NSError?
let isTouchIdAvailable = authenticationContext.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics,
error: &error)
if isTouchIdAvailable
{
NSLog("恭喜,Touch ID可以使用!")
//步骤2:获取指纹验证结果
authenticationContext.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics,localizedReason: "需要验证您的指纹来确认您的身份信息",reply: {
(success,error) -> Void in
if success
{
NSLog("恭喜,您通过了Touch ID指纹验证!")
}
else
{
NSLog("抱歉,您未能通过Touch ID指纹验证!\n\(error)")
}
})
}
else
{
NSLog("抱歉,Touch ID不可以使用!\n\(error)")
}
}
上面的代码首先创建了一个LAContext实例,用于执行认证策略(Authentication Policies)。然后在该对象上调用canEvaluatePolicy方法执行某个指定的认证策略,其方法签名为:
func canEvaluatePolicy(policy: LAPolicy,error: NSErrorPointer) -> Bool
LAPolicy枚举目前只有一个枚举值.DeviceOwnerAuthenticationWithBiometrics,即使用指纹生物识别方式来认证设备机主。
enum LAPolicy: Int
{
case DeviceOwnerAuthenticationWithBiometrics
}
LAPolicy枚举目前只有一个枚举值.DeviceOwnerAuthenticationWithBiometrics,即使用指纹生物识别方式来认证设备机主。
- enumLAPolicy:Int
- {
- caseDeviceOwnerAuthenticationWithBiometrics
- }
例如,在iPhone 5上运行结果为: