iOS開發(fā)-Touch ID指紋解鎖

導(dǎo)語
蘋果在iPhone 5s之后添加了Touch ID指紋識別功能,用戶可以通過指紋來對iPhone進(jìn)行安全而高效的訪問?,F(xiàn)在很多應(yīng)用都添加了指紋識別,如QQ登錄,支付寶支付等等。
利用Touch ID進(jìn)行指紋解鎖
http://upload-images.jianshu.io/upload_images/679533-268db1e09507a065.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

https://github.com/chlsix/TouchIDDemo源代碼地址說明
Touch ID的調(diào)用接口是LocalAuthentication.framework,調(diào)用時(shí)需要導(dǎo)入頭文件
<pre>#import <LocalAuthentication/LocalAuthentication.h></pre>

2.需要用的方法有兩個(gè)

<pre> - (BOOL)canEvaluatePolicy:(LAPolicy)policy
error:(NSError * __autoreleasing *)error attribute((swift_error(none)));</pre>

用來驗(yàn)證設(shè)備支不支持Touch ID

<pre> - (void)evaluatePolicy:(LAPolicy)policy
localizedReason:(NSString *)localizedReason
reply:(void(^)(BOOL success, NSError * __nullable error))reply;</pre>

驗(yàn)證Touch ID(會有彈出框)

3.當(dāng)輸入錯(cuò)誤的指紋時(shí)會彈出"再試一次"驗(yàn)證框
http://upload-images.jianshu.io/upload_images/679533-4b35d569f20be88e.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

<pre> //初始化
LAContext context = [LAContext new];
/
* 這個(gè)屬性用來設(shè)置指紋錯(cuò)誤后的彈出框的按鈕文字

  • 不設(shè)置默認(rèn)文字為“輸入密碼”
  • 設(shè)置@""將不會顯示指紋錯(cuò)誤后的彈出框
    */
    context.localizedFallbackTitle = @"忘記密碼";</pre>

4.回調(diào)方法
接口提供了Touch ID驗(yàn)證成功和失敗的回調(diào)方法
<pre>[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:@"指紋驗(yàn)證"
reply:^(BOOL success, NSError * _Nullable error) {
if (success) {
//驗(yàn)證成功執(zhí)行
NSLog(@"指紋識別成功");
//在主線程刷新view,不然會有卡頓
dispatch_async(dispatch_get_main_queue(), ^{
[view removeFromSuperview];
//保存設(shè)置狀態(tài)
[[NSUserDefaults standardUserDefaults] setValue:[NSString stringWithFormat:@"%d", sender.isOn] forKey:@"touchOn"];
});
} else {
if (error.code == kLAErrorUserFallback) {
//Fallback按鈕被點(diǎn)擊執(zhí)行
NSLog(@"Fallback按鈕被點(diǎn)擊");
} else if (error.code == kLAErrorUserCancel) {
//取消按鈕被點(diǎn)擊執(zhí)行
NSLog(@"取消按鈕被點(diǎn)擊");
} else {
//指紋識別失敗執(zhí)行
NSLog(@"指紋識別失敗");
}
dispatch_async(dispatch_get_main_queue(), ^{
[view removeFromSuperview];
[sender setOn:!sender.isOn animated:YES];
[[NSUserDefaults standardUserDefaults] setValue:[NSString stringWithFormat:@"%d", sender.isOn] forKey:@"touchOn"];
});
}
}];</pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容