生活中移動端APP應(yīng)用是越來越廣泛窿锉,為了提高安全效率氮唯,例如支付APP、銀行APP都集成了指紋良风、手勢等二次驗證功能谊迄。今天給大家分享一下指紋識別集成到APP的具體實現(xiàn)功能。
指紋識別基于Core OS層LocalAuthentication框架烟央,iOS8的時候已經(jīng)開始應(yīng)用统诺,LocalAuthentication框架是用來實現(xiàn)iOS中指紋識別的,指定安全策略的用戶請求身份的驗證工具疑俭,自iPhone5s加入touchID后粮呢,指紋安全策略已廣泛推廣。項目中如何使用钞艇?首先我們要在項目中引入頭文件如下圖
使用的方法如下:
- (BOOL)canEvaluatePolicy:(LAPolicy)policy?error:(NSError?*?__autoreleasing?*)error __attribute__((swift_error(none)));此方法是判斷設(shè)備是否具有指紋識別的功能也就是touchID是否可用啄寡,返回的是一個bool值。
-(void)evaluatePolicy:(LAPolicy)policylocalizedReason:(NSString*)localizedReason??reply:(void(^)(BOOL?success,?NSError?*?__nullable?error))reply;此方法是對設(shè)備是否支持指紋識別進行驗證哩照。此方法有設(shè)有三個參數(shù)这难,policy:LAPolicy是一個枚舉類型,有兩個枚舉類型(LAPolicyDeviceOwnerAuthenticationWithBiometrics,LAPolicyDeviceOwnerAuthentication)葡秒,其中LAPolicyDeviceOwnerAuthenticationWithBiometrics的意思是說明用指紋去驗證姻乓,LAPolicyDeviceOwnerAuthentication的意思是使用驗證密碼或者touchID,識別錯誤2次時會彈出提示密碼輸入眯牧;localizedReason:驗證說明蹋岩,是一個NSString類型的;reply:它是一個block回調(diào)函數(shù)学少,block里面有一個BOOL類型的值success是用來判斷返回驗證是否成功剪个,NSError類型的值error是用來返回code錯誤信息的。錯誤信息枚舉:
LAErrorAuthenticationFailed(授權(quán)失敗)版确,LAErrorUserCancel(用戶取消驗證touchID)扣囊,LAErrorUserFallback(用戶失敗選擇密碼驗證),
LAErrorSystemCancel(系統(tǒng)取消授權(quán))绒疗,LAErrorPasscodeNotSet(設(shè)備未設(shè)置密碼)侵歇,LAErrorTouchIDNotAvailable(設(shè)備未設(shè)置touchID),
LAErrorTouchIDNotEnrolled(用戶未錄用指紋)吓蘑,LAErrorTouchIDLockout(touchID被鎖惕虑,需要用戶密碼解鎖)坟冲,
LAErrorAppCancel(認(rèn)證應(yīng)用被取消),LAErrorInvalidContext(
授權(quán)對象失效)溃蔫,LAErrorNotInteractive(APP未完全啟動,調(diào)用失敗)健提。
????????以上兩個方法的調(diào)用需要實例化LAContext對象(LAContext?*context =[LAContextnew];)。LAContext對象有幾個屬性值分別是:
localizedFallbackTitle(指紋驗證失敗之后彈出框的選項)伟叛;
localizedCancelTitle(設(shè)置驗證時取消按鈕標(biāo)題)私痹;
maxBiometryFailures(設(shè)置指紋驗證錯誤次數(shù));
evaluatedPolicyDomainState(檢測指紋庫變化)统刮;
touchIDAuthenticationAllowableReuseDuration(設(shè)置指紋開啟時間間隔侄榴,錯過時間需要重新驗證)。
主要識別代碼如下圖所示: