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