iOS8 蘋果開放了指紋驗(yàn)證功能,支持5s以上的機(jī)型。
1.導(dǎo)入框架
#import <LocalAuthentication/LocalAuthentication.h>
2.定義幾種可能性的block回調(diào)
typedef void (^SuccessVerifyBlock) (BOOL success);//驗(yàn)證成功
typedef void (^ErrorBlock) (NSError *error);//驗(yàn)證失敗
typedef void (^InputPwdBlock)(NSError *error);//驗(yàn)證失敗輸入密碼
typedef void (^DeviceNoSupportBlock)();//設(shè)備不支持
3.編碼
+ (void)verifyFingerPrintWithSuccessBlock:(SuccessVerifyBlock)block WithErrorBlock:(ErrorBlock)errorBlock WithInputPwdBlock:(InputPwdBlock)inputPwdBlock WithDeviceNoSupportBlock:(DeviceNoSupportBlock)deviceNoSupportBlock {
LAContext *ctx = [[LAContext alloc]init];
// 判斷設(shè)備是否支持指紋識(shí)別
if ([ctx canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:NULL]) {
// 輸入指紋 - 回調(diào)是異步的
[ctx evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:DetailDescription reply:^(BOOL success, NSError *error) {
// 1. 如果輸入成功
if (success) {
//成功
dispatch_async(dispatch_get_main_queue(), ^{
//驗(yàn)證成功回調(diào)
block(success);
});
} else {
//指紋驗(yàn)證失敗會(huì)彈出框,是否使用密碼驗(yàn)證。
// 判斷錯(cuò)誤類型是否是主動(dòng)自行輸入密碼
if (error.code == LAErrorUserFallback) {
dispatch_async(dispatch_get_main_queue(), ^{
//密碼驗(yàn)證方法
inputPwdBlock(error);
//跳轉(zhuǎn)到登錄頁(yè)面登錄
});
} else {
dispatch_async(dispatch_get_main_queue(), ^{
//指紋驗(yàn)證沒有通過,沒有點(diǎn)擊用密碼驗(yàn)證彈出框
errorBlock(error);
});
}
}
}];
} else {
//設(shè)備不支持指紋識(shí)別
deviceNoSupportBlock();
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。