iOS touchID
指纹技术是苹果2013年在iPhone5s(iOS7)上开始应用的。iOS7是不允许开发人员来使用TouchAPI来验证自己的应用程序。
iOS8开始,苹果陆续开放了Touch ID公共API。TouchID的使用时“本地”的一个验证,框架给我们提供了提示用户进行身份验证的方法。我们可以使用它来认证登录,或授权访问安全敏感信息的应用程序。
我们要使用的是Local Authentication framework。
我们是直接获取TouchID来做的,很多APP都是有开关来控制,是否用TouchID来登录或者打开APP。
import LocalAuthentication
typealiasFKBlock2 = (_:Any) -> ()
func touchID (_block:@escapingFKBlock2){
let context =LAContext()
varerror:NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
// 下面是开始指纹解锁的代码
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason:"请用指纹解锁", reply: {success, errorin
if success {
// let data = context.evaluatedPolicyDomainState;
// 成功之后的逻辑, 通常使用多线程来实现跳转逻辑。
block("ISOK")
}else{
if let error = error as NSError? {
// 获取错误信息
let message = self.errorMessageForLAErrorCode(errorCode: error.code)
block(message)
}
}
})
}else if let error = error as NSError? {
let message =self.errorMessageForLAErrorCode(errorCode: error.code)
block(message)
}
}
func errorMessageForLAErrorCode(errorCode:Int) ->String{
var message =""
switcherrorCode {
case LAError.authenticationFailed.rawValue:
message ="TouchID 验证失败";
break;
case LAError.userCancel.rawValue:
message ="TouchID 被用户手动取消";
break;
case LAError.userFallback.rawValue:
message ="用户不使用TouchID,选择手动输入密码";
break;
case LAError.systemCancel.rawValue:
message ="TouchID 被系统取消 (如遇到来电,锁屏,按了Home键等)";
break;
case LAError.passcodeNotSet.rawValue:
message ="TouchID 无法启动,因为用户没有设置密码";
break;
case LAError.touchIDNotEnrolled.rawValue:
message ="TouchID 无法启动,因为用户没有设置TouchID";
break;
case LAError.touchIDNotAvailable.rawValue:
message ="TouchID 无效";
break;
case LAError.touchIDLockout.rawValue:
message ="TouchID 被锁定(连续多次验证TouchID失败,系统需要用户手动输入密码)";
break;
case LAError.appCancel.rawValue:
message ="当前软件被挂起并取消了授权 (如App进入了后台等)";
break;
case LAError.invalidContext.rawValue:
message ="当前软件被挂起并取消了授权 (LAContext对象无效)";
default:
message ="未在LAError对象上找到错误代码"
}
returnmessage
}
网友评论