一房维、引言
iPhone5s之后,iPhone硬件上已支持進行指紋識別的功能每窖,相應的帮掉,一些新的api也可以應用于APP中,進行用戶安全的驗證窒典。目前蟆炊,開發(fā)者可以使用的安全驗證方式有兩種,一種是通過手機密碼進行驗證瀑志,一種是通過識別指紋進行驗證涩搓。
二、為APP添加安全驗證
要使用安全驗證的相關api劈猪,我們需要引入如下頭文件:<LocalAuthentication/LocalAuthentication.h>
//typedef NS_ENUM(NSInteger, LAError)
//{
////用戶驗證沒有通過昧甘,比如提供了錯誤的手指的指紋
//LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,
//
////用戶取消了Touch ID驗證
//LAErrorUserCancel= kLAErrorUserCancel,
//
////用戶不想進行Touch ID驗證,想進行輸入密碼操作
//LAErrorUserFallback= kLAErrorUserFallback,
//
////系統(tǒng)終止了驗證
//LAErrorSystemCancel= kLAErrorSystemCancel,
//
////用戶沒有在設備Settings中設定密碼
//LAErrorPasscodeNotSet= kLAErrorPasscodeNotSet,
//
////設備不支持Touch ID
//LAErrorTouchIDNotAvailable= kLAErrorTouchIDNotAvailable,
//
////設備沒有進行Touch ID指紋注冊
//LAErrorTouchIDNotEnrolled= kLAErrorTouchIDNotEnrolled,
//} NS_ENUM_AVAILABLE(10_10, 8_0);
三.代碼
//初始化上下文對象
LAContext*context = [[LAContextalloc]init];
NSError*error;
NSString*result =@"需要您的支付進行支付";
context.localizedFallbackTitle=@"快捷支付";
//首先使用canEvaluatePolicy判斷設備的支付狀態(tài)
if([contextcanEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricserror:&error]) {
//支持指紋的驗證
[contextevaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricslocalizedReason:resultreply:^(BOOLsuccess,NSError*_Nullableerror) {
if(success) {
//驗證成功战得,主線程處理UI
NSLog(@"驗證成功");
}else{
switch(error.code) {
caseLAErrorSystemCancel:
{
//切換到其他App充边,系統(tǒng)取消驗證Touch ID
}
break;
caseLAErrorUserCancel:
{
//用戶取消使用Touch ID
}
break;
caseLAErrorUserFallback:
{
//用戶選擇輸入密碼,切換主線程處理
[[NSOperationQueuemainQueue]addOperationWithBlock:^{
//回到主線程進行活動
}];
}
break;
caseLAErrorAuthenticationFailed:
{//用戶驗證沒有通過常侦。比如提供了錯誤的手指指紋
}
break;
caseLAErrorTouchIDLockout:
{
}
break;
caseLAErrorAppCancel:
{
}
break;
caseLAErrorInvalidContext:
{
}
break;
default:
{
[[NSOperationQueuemainQueue]addOperationWithBlock:^{
//其他情況需要在主線程進行處理
}];
}
break;
}
}
}];
}else{
switch(error.code) {
caseLAErrorTouchIDNotEnrolled:
{
}
break;
caseLAErrorPasscodeNotSet:
{
}
break;
default:
{
// Touch ID不可使用
}
break;
}
}
}