支持系統(tǒng)和機(jī)型
iOS系統(tǒng)的指紋識(shí)別功能最低支持的機(jī)型為iPhone 5s,最低支持系統(tǒng)為iOS 8,雖然安裝iOS 7系統(tǒng)的5s機(jī)型可以使用系統(tǒng)提供的指紋解鎖功能,但由于API并未開(kāi)放,所以理論上第三方軟件不可使用。
依賴框架
在使用前我們需要導(dǎo)入 LocalAuthentication.framework 這個(gè)庫(kù)
然后引入頭文件
#import <LocalAuthentication/LocalAuthentication.h>
這個(gè)庫(kù)必須要Xcode6并且連接的是真機(jī),才不會(huì)提示找不到的錯(cuò)誤。 如果是模擬器會(huì)提示找不到這個(gè)庫(kù)。
OC代碼
//驗(yàn)證是否支持TouchID
- (void)judgeCanTouchId
{
LAContext *context = [LAContext new];
NSError *error;
context.localizedFallbackTitle = @"輸入密碼";
if ([context canEvaluatePolicy:(LAPolicyDeviceOwnerAuthenticationWithBiometrics) error:&error])
{
NSLog(@"支持使用");
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:NSLocalizedString(@"通過(guò)驗(yàn)證指紋解鎖",nil) reply:^(BOOL success, NSError * _Nullable error) {
if (success) {
NSLog(@"驗(yàn)證成功");
}
else
{
/*
// 用戶未提供有效證書,(3次機(jī)會(huì)失敗 --身份驗(yàn)證失敗)。
LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,
// 認(rèn)證被取消,(用戶點(diǎn)擊取消按鈕)。
LAErrorUserCancel = kLAErrorUserCancel,
// 認(rèn)證被取消,用戶點(diǎn)擊回退按鈕(輸入密碼)。
LAErrorUserFallback = kLAErrorUserFallback,
// 身份驗(yàn)證被系統(tǒng)取消,(比如另一個(gè)應(yīng)用程序去前臺(tái),切換到其他 APP)。
LAErrorSystemCancel = kLAErrorSystemCancel,
// 身份驗(yàn)證無(wú)法啟動(dòng),因?yàn)槊艽a在設(shè)備上沒(méi)有設(shè)置。
LAErrorPasscodeNotSet = kLAErrorPasscodeNotSet,
// 身份驗(yàn)證無(wú)法啟動(dòng),因?yàn)橛|摸ID在設(shè)備上不可用。
LAErrorTouchIDNotAvailable = kLAErrorTouchIDNotAvailable,
// 身份驗(yàn)證無(wú)法啟動(dòng),因?yàn)闆](méi)有登記的手指觸摸ID。 沒(méi)有設(shè)置指紋密碼時(shí)。
LAErrorTouchIDNotEnrolled = kLAErrorTouchIDNotEnrolled,
**/
if (error.code == kLAErrorUserFallback) {
NSLog(@"用戶選擇了另一種方式");
}
else if (error.code == kLAErrorUserCancel)
{
NSLog(@"用戶取消");
}
else if (error.code == kLAErrorSystemCancel)
{
NSLog(@"切換前臺(tái)被取消");
}
else if (error.code == kLAErrorPasscodeNotSet)
{
NSLog(@"身份驗(yàn)證沒(méi)有設(shè)置");
}
else
{
NSLog(@"驗(yàn)證失敗");
}
}
}];
}
else
{
NSLog(@"不支持使用");
}
}
IMG_0858.PNG
總結(jié)
Touch ID驗(yàn)證中我們并不能拿到標(biāo)識(shí),只有一個(gè)YES or NO的結(jié)果