生活中移動(dòng)端APP應(yīng)用是越來(lái)越廣泛,為了提高安全效率,例如支付APP、銀行APP都集成了指紋、手勢(shì)等二次驗(yàn)證功能。今天給大家分享一下指紋識(shí)別集成到APP的具體實(shí)現(xiàn)功能。
指紋識(shí)別基于Core OS層LocalAuthentication框架,iOS8的時(shí)候已經(jīng)開(kāi)始應(yīng)用,LocalAuthentication框架是用來(lái)實(shí)現(xiàn)iOS中指紋識(shí)別的,指定安全策略的用戶請(qǐng)求身份的驗(yàn)證工具,自iPhone5s加入touchID后,指紋安全策略已廣泛推廣。項(xiàng)目中如何使用?首先我們要在項(xiàng)目中引入頭文件如下圖
使用的方法如下:
- (BOOL)canEvaluatePolicy:(LAPolicy)policy?error:(NSError?*?__autoreleasing?*)error __attribute__((swift_error(none)));此方法是判斷設(shè)備是否具有指紋識(shí)別的功能也就是touchID是否可用,返回的是一個(gè)bool值。
-(void)evaluatePolicy:(LAPolicy)policylocalizedReason:(NSString*)localizedReason??reply:(void(^)(BOOL?success,?NSError?*?__nullable?error))reply;此方法是對(duì)設(shè)備是否支持指紋識(shí)別進(jìn)行驗(yàn)證。此方法有設(shè)有三個(gè)參數(shù),policy:LAPolicy是一個(gè)枚舉類(lèi)型,有兩個(gè)枚舉類(lèi)型(LAPolicyDeviceOwnerAuthenticationWithBiometrics,LAPolicyDeviceOwnerAuthentication),其中LAPolicyDeviceOwnerAuthenticationWithBiometrics的意思是說(shuō)明用指紋去驗(yàn)證,LAPolicyDeviceOwnerAuthentication的意思是使用驗(yàn)證密碼或者touchID,識(shí)別錯(cuò)誤2次時(shí)會(huì)彈出提示密碼輸入;localizedReason:驗(yàn)證說(shuō)明,是一個(gè)NSString類(lèi)型的;reply:它是一個(gè)block回調(diào)函數(shù),block里面有一個(gè)BOOL類(lèi)型的值success是用來(lái)判斷返回驗(yàn)證是否成功,NSError類(lèi)型的值error是用來(lái)返回code錯(cuò)誤信息的。錯(cuò)誤信息枚舉:
LAErrorAuthenticationFailed(授權(quán)失敗),LAErrorUserCancel(用戶取消驗(yàn)證touchID),LAErrorUserFallback(用戶失敗選擇密碼驗(yàn)證),
LAErrorSystemCancel(系統(tǒng)取消授權(quán)),LAErrorPasscodeNotSet(設(shè)備未設(shè)置密碼),LAErrorTouchIDNotAvailable(設(shè)備未設(shè)置touchID),
LAErrorTouchIDNotEnrolled(用戶未錄用指紋),LAErrorTouchIDLockout(touchID被鎖,需要用戶密碼解鎖),
LAErrorAppCancel(認(rèn)證應(yīng)用被取消),LAErrorInvalidContext(
授權(quán)對(duì)象失效),LAErrorNotInteractive(APP未完全啟動(dòng),調(diào)用失敗)。
????????以上兩個(gè)方法的調(diào)用需要實(shí)例化LAContext對(duì)象(LAContext?*context =[LAContextnew];)。LAContext對(duì)象有幾個(gè)屬性值分別是:
localizedFallbackTitle(指紋驗(yàn)證失敗之后彈出框的選項(xiàng));
localizedCancelTitle(設(shè)置驗(yàn)證時(shí)取消按鈕標(biāo)題);
maxBiometryFailures(設(shè)置指紋驗(yàn)證錯(cuò)誤次數(shù));
evaluatedPolicyDomainState(檢測(cè)指紋庫(kù)變化);
touchIDAuthenticationAllowableReuseDuration(設(shè)置指紋開(kāi)啟時(shí)間間隔,錯(cuò)過(guò)時(shí)間需要重新驗(yàn)證)。
主要識(shí)別代碼如下圖所示: