要求 :iOS 系統(tǒng)必須是8.0以上,mac系統(tǒng)必須是10.10以上,在5S之上的設(shè)備才支持指紋識(shí)別功能。
iOS 8 SDK向開發(fā)者公開了Touch ID指紋識(shí)別功能,允許App對(duì)用戶身份進(jìn)行本地驗(yàn)證。使用Touch ID非常簡單;
1.需要引入LocalAuthentication框架
2.使用代碼
LAContext *context = [[LAContext alloc]init];
context.localizedFallbackTitle = fallbackTitle;
NSError *error = nil;
NSAssert(self.delegate != nil, WJNotice(@"WJTouchIDDelegate 不能為空", @"WJTouchIDDelegate must be non-nil"));
//判斷設(shè)備是否支持指紋識(shí)別
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
// 輸入指紋,異步
// 提示:指紋識(shí)別只是判斷當(dāng)前用戶是否是手機(jī)的主人!程序原本的邏輯不會(huì)受到任何的干擾!
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:message == nil ? WJNotice(@"默認(rèn)提示信息", @"The Default Message") : message reply:^(BOOL success, NSError * _Nullable error) {
if (success) {
//指紋識(shí)別成功之后的處理
}
} else if (error) {
switch (error.code) {
case LAErrorAuthenticationFailed: {
//用戶驗(yàn)證失敗
}
break;
case LAErrorUserCancel: {
//用戶取消
}
break;
case LAErrorUserFallback: {
//在TouchID對(duì)話框中點(diǎn)擊輸入密碼按鈕
}
break;
case LAErrorSystemCancel:{
//在驗(yàn)證的TouchID的過程中被系統(tǒng)取消 例如突然來電話、按了Home鍵、鎖屏...
}
}
break;
case LAErrorTouchIDNotEnrolled: {
//設(shè)備沒有錄入TouchID,無法啟用TouchID
}
break;
case LAErrorPasscodeNotSet: {
//無法啟用TouchID,設(shè)備沒有設(shè)置密碼
}
break;
case LAErrorTouchIDNotAvailable: {
//該設(shè)備的TouchID無效
}
break;
case LAErrorTouchIDLockout: {
//多次連續(xù)使用Touch ID失敗,Touch ID被鎖,需要用戶輸入密碼解鎖
}
break;
case LAErrorAppCancel: {
//當(dāng)前軟件被掛起取消了授權(quán)(如突然來了電話,應(yīng)用進(jìn)入前臺(tái))
}
break;
case LAErrorInvalidContext: {
//當(dāng)前軟件被掛起取消了授權(quán) (授權(quán)過程中,LAContext對(duì)象被釋)
}
break;
}
}
}];
} else {
// 當(dāng)前設(shè)備不支持指紋識(shí)別
}