要求 :iOS 系統(tǒng)必須是8.0以上,mac系統(tǒng)必須是10.10以上,在5S之上的設(shè)備才支持指紋識別功能。
iOS 8 SDK向開發(fā)者公開了Touch ID指紋識別功能,允許App對用戶身份進行本地驗證。使用Touch ID非常簡單;
1.需要引入LocalAuthentication框架
2.使用代碼
LAContext *context = [[LAContext alloc]init];
context.localizedFallbackTitle = fallbackTitle;
NSError *error = nil;
NSAssert(self.delegate != nil, WJNotice(@"WJTouchIDDelegate 不能為空", @"WJTouchIDDelegate must be non-nil"));
//判斷設(shè)備是否支持指紋識別
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
// 輸入指紋,異步
// 提示:指紋識別只是判斷當(dāng)前用戶是否是手機的主人!程序原本的邏輯不會受到任何的干擾!
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:message == nil ? WJNotice(@"默認(rèn)提示信息", @"The Default Message") : message reply:^(BOOL success, NSError * _Nullable error) {
if (success) {
//指紋識別成功之后的處理
}
} else if (error) {
switch (error.code) {
case LAErrorAuthenticationFailed: {
//用戶驗證失敗
}
break;
case LAErrorUserCancel: {
//用戶取消
}
break;
case LAErrorUserFallback: {
//在TouchID對話框中點擊輸入密碼按鈕
}
break;
case LAErrorSystemCancel:{
//在驗證的TouchID的過程中被系統(tǒng)取消 例如突然來電話、按了Home鍵、鎖屏...
}
}
break;
case LAErrorTouchIDNotEnrolled: {
//設(shè)備沒有錄入TouchID,無法啟用TouchID
}
break;
case LAErrorPasscodeNotSet: {
//無法啟用TouchID,設(shè)備沒有設(shè)置密碼
}
break;
case LAErrorTouchIDNotAvailable: {
//該設(shè)備的TouchID無效
}
break;
case LAErrorTouchIDLockout: {
//多次連續(xù)使用Touch ID失敗,Touch ID被鎖,需要用戶輸入密碼解鎖
}
break;
case LAErrorAppCancel: {
//當(dāng)前軟件被掛起取消了授權(quán)(如突然來了電話,應(yīng)用進入前臺)
}
break;
case LAErrorInvalidContext: {
//當(dāng)前軟件被掛起取消了授權(quán) (授權(quán)過程中,LAContext對象被釋)
}
break;
}
}
}];
} else {
// 當(dāng)前設(shè)備不支持指紋識別
}