1>>>導(dǎo)入庫#import<LocalAuthentication/LocalAuthentication.h>
2>>>viewDidLoad中做初始化對象和驗證是否支持Touch ID解鎖的操作:
LAContext* context = [[LAContext alloc] init];
NSError* error = nil;
/*ios 8.0以上才支持
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
}
或者下面*/
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
[self doSomeAuthWith:context];
}
else {//不支持touch ID解鎖
NSLog(@"==========Not support :%@", error.description);
}
3>>>自定義的方法doSomeAuthWith:(LAContext *)someThing方法內(nèi)部做進一步操作和判定
- (void)doSomeAuthWith:(LAContext *)someThing
{
LAContext * myContext = (LAContext *)someThing;
myContext.localizedFallbackTitle = @"輸入密碼";
NSError *authError = nil;
NSString *myLocalizedReasonString = @"用于解除系統(tǒng)鎖定!";
if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError])
{
[myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:myLocalizedReasonString
reply:^(BOOL success, NSError *error) {
if(success)
{
//處理驗證通過
NSLog(@"指紋驗證通過");
}
else
{
//處理驗證失敗
NSLog(@"%@",[self getAuthErrorDescription:error.code] );
}
}];
}
else
{
//不支持Touch ID驗證,提示用戶
}
}
4>>>方法getAuthErrorDescription:(NSInteger)code通過傳入錯誤碼返回具體失敗原因
- (NSString *)getAuthErrorDescription:(NSInteger)code
{
NSString *msg = @"";
switch (code) {
case LAErrorTouchIDNotEnrolled:
//認(rèn)證不能開始,因為touch id沒有錄入指紋.
msg = @"此設(shè)備未錄入指紋信息!";
break;
case LAErrorTouchIDNotAvailable:
//認(rèn)證不能開始,因為touch id在此臺設(shè)備尚是無效的.
msg = @"此設(shè)備不支持Touch ID!";
break;
case LAErrorPasscodeNotSet:
//認(rèn)證不能開始,因為此臺設(shè)備沒有設(shè)置密碼.
msg = @"未設(shè)置密碼,無法開啟認(rèn)證!";
break;
case LAErrorSystemCancel:
//認(rèn)證被系統(tǒng)取消了,例如其他的應(yīng)用程序到前臺了
msg = @"系統(tǒng)取消認(rèn)證";
break;
case LAErrorUserFallback:
//認(rèn)證被取消,因為用戶點擊了fallback按鈕(輸入密碼).
msg = @"選擇輸入密碼!";
break;
case LAErrorUserCancel:
//認(rèn)證被用戶取消,例如點擊了cancel按鈕.
msg = @"取消認(rèn)證!";
break;
case LAErrorAuthenticationFailed:
//認(rèn)證沒有成功,因為用戶沒有成功的提供一個有效的認(rèn)證資格
msg = @"認(rèn)證失敗!";
break;
default:
break;
}
return msg;
}