導(dǎo)入頭文件
#import <LocalAuthentication/LocalAuthentication.h>
因?yàn)橹讣y識(shí)別是蘋(píng)果在iOS8才出的一個(gè)功能债蓝,所以進(jìn)行判斷是不是iOS8以及之后的系統(tǒng)版本
if ([UIDevice currentDevice].systemVersion.floatValue < 8.0) {
return;
}
獲取指紋識(shí)別
- (void)getTouchIDMethod
{
//創(chuàng)建LAContext
LAContext* context = [[LAContext alloc] init];
NSError* error = nil;
NSString* result = @"請(qǐng)驗(yàn)證已有指紋";
//首先使用canEvaluatePolicy 判斷設(shè)備支持狀態(tài)
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
//支持指紋驗(yàn)證
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) {
if (success) {
//驗(yàn)證成功苛骨,主線(xiàn)程處理UI
NSLog(@"驗(yàn)證成功");
}
else
{
NSLog(@"%@",error.localizedDescription);
switch (error.code) {
case LAErrorSystemCancel:
{
//系統(tǒng)取消授權(quán)运悲,如其他APP切入
break;
}
case LAErrorUserCancel:
{
//用戶(hù)取消驗(yàn)證Touch ID
break;
}
case LAErrorAuthenticationFailed:
{
//授權(quán)失敗
break;
}
case LAErrorPasscodeNotSet:
{
//系統(tǒng)未設(shè)置密碼
break;
}
case LAErrorTouchIDNotAvailable:
{
//設(shè)備Touch ID不可用,例如未打開(kāi)
break;
}
case LAErrorTouchIDNotEnrolled:
{
//設(shè)備Touch ID不可用熟丸,用戶(hù)未錄入
break;
}
case LAErrorUserFallback:
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//用戶(hù)選擇輸入密碼,切換主線(xiàn)程處理
}];
break;
}
default:
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//其他情況,切換主線(xiàn)程處理
}];
break;
}
}
}
}];
}
else
{
//不支持指紋識(shí)別,LOG出錯(cuò)誤詳情
NSLog(@"不支持指紋識(shí)別");
switch (error.code) {
case LAErrorTouchIDNotEnrolled:
{
NSLog(@"TouchID is not enrolled");
break;
}
case LAErrorPasscodeNotSet:
{
NSLog(@"A passcode has not been set");
break;
}
default:
{
NSLog(@"TouchID not available");
break;
}
}
NSLog(@"%@",error.localizedDescription);
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者