iOS 8.0 & iPhone5s以后 蘋果開發(fā)了touchID 桃序,開發(fā)者能夠使用指紋識(shí)別
首先倒入頭文件
#import <LocalAuthentication/LocalAuthentication.h>
點(diǎn)進(jìn)去能看到兩個(gè)頭文件 分別是:
#import <LocalAuthentication/LAContext.h>
#import <LocalAuthentication/LAError.h>
顯而易見醇疼,指紋識(shí)別是操作LAContext茶宵,并且提供了一個(gè)LAError進(jìn)行錯(cuò)誤處理
LAContext :
兩個(gè)枚舉值?
LAPolicyDeviceOwnerAuthenticationWithBiometrics ?//生物識(shí)別技術(shù)
LAPolicyDeviceOwnerAuthentication源祈。 ? ? ? ? ? ? ? ? ? ? ? ?//設(shè)備識(shí)別
第一個(gè)枚舉值就是專門用來做指紋識(shí)別的
第二個(gè)同第一個(gè)有一點(diǎn)不一樣的地方,就是巢块,三次指紋錯(cuò)誤后暇韧,自動(dòng)彈出輸入設(shè)備密碼的界面,咱們主要講第一個(gè)
除了兩個(gè)枚舉值廊宪,還有兩個(gè)方法
//判斷是否能夠進(jìn)行指紋識(shí)別
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error?
//進(jìn)行指紋識(shí)別
- (void)evaluatePolicy:(LAPolicy)policy//要進(jìn)行什么類型的指紋識(shí)別一般選擇生物指紋識(shí)別
? ? ? localizedReason:(NSString *)localizedReason //識(shí)別指紋要展示的文字矾瘾,比如 指紋支付
? ? ? ? ? ? ? ? reply:(void(^)(BOOL success, NSError * __nullable error))reply; //回調(diào)的block
如果指紋驗(yàn)證成功,success就會(huì)返回YES箭启,失敗則返回NO
不過需要注意壕翩,如果我們?cè)隍?yàn)證指紋的過程中點(diǎn)擊輸入密碼,則直接返回error傅寡,這個(gè)時(shí)候我們就需要對(duì)error進(jìn)行處理
LAError:
LAErrorAuthenticationFailed, // 驗(yàn)證信息出錯(cuò)放妈,指紋信息不對(duì)
?LAErrorUserCancel // 用戶手動(dòng)取消了驗(yàn)證?
?LAErrorUserFallback // 用戶點(diǎn)擊了手動(dòng)輸入密碼的按鈕,所以被取消了
?LAErrorSystemCancel // 被系統(tǒng)取消荐操,就是說你現(xiàn)在進(jìn)入別的應(yīng)用了芜抒,不在剛剛那個(gè)頁(yè)面,所以沒法驗(yàn)證?
?LAErrorPasscodeNotSet // 用戶沒有設(shè)置密碼托启,所以無法啟動(dòng)指紋驗(yàn)證
TouchID LAErrorTouchIDNotAvailable // 用戶設(shè)備不支持TouchID 也就是iPhone5s之前的設(shè)備不支持
?LAErrorTouchIDNotEnrolled // 用戶沒有設(shè)置手指指紋?
?LAErrorTouchIDLockout // 用戶錯(cuò)誤次數(shù)太多宅倒,設(shè)備被鎖住多少分鐘
?LAErrorAppCancel // 用戶不可抗力的因素導(dǎo)致app掛起倔撞,比如電話
?LAErrorInvalidContext // 請(qǐng)求驗(yàn)證出錯(cuò)