iOS 設備驗證接口從iOS8開始開放,暫時無法獲取指紋數據,api只返回驗證成功與否.指紋功能5s以上設備纔有.
使用步驟:
1.導入系統庫
#import <LocalizedAuthentication/LocalizedAuthentication.h>
2.api從iOS8纔開始開放,所以先要判斷系統版本
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0f) {
3.創建設備驗證上下文
LAContext *context = [[LAContext alloc] init];
//設置使用touchID(指紋)驗證的時間間隔,在這個間隔內,下次調起指紋驗證將直接通過.
//例如設備剛解鎖,那麼15s(如下)內再次調起指紋時不需要觸摸home鍵直接通過驗證
context.touchIDAuthenticationAllowableReuseDuration = 15;
4.先試探本設備開放的驗證策略
NSError *error = nil;
if([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
//驗證策略有兩種LAPolicyDeviceOwnerAuthentication LAPolicyDeviceOwnerAuthenticationWithBiometrics
//試探和後面開始驗證應該使用相同的策略.就好像不會canOpenURL:百度,結果openURL:臉書
//LAPolicyDeviceOwnerAuthentication:該策略首先使用指紋,如果未錄入指紋或者有可能設備不支持則會切換到設備密碼驗證
//LAPolicyDeviceOwnerAuthenticationWithBiometrics:該策略只是用指紋,如果未錄入指紋或者設備不支持則會返回失敗
//失敗情況下可以通過error獲取失敗原因,[error code]爲-5說明設備沒有設置密碼或者指紋.
//-7則說明未註冊指紋(只有在LAPolicyDeviceOwnerAuthenticationWithBiometrics策略下才會出現-7)
5.開始驗證
[context evaluatePolicy:LAPolicyDeviceOwnerAuthentication localizedReason:@"提示語" reply:^(BOOL success, NSError *Nullable error) {
//success表示設備驗證成功或者失敗
//error可以獲取失敗原因,[error code]爲-2說明是用戶取消了驗證(點擊了取消)
//-4說明是系統取消了,可能是此時有電話呼入或者用戶按下home鍵`電源鍵等等.也有可能出現-7,見上
}];
}
}
只需要指紋的話就用LAPolicyDeviceOwnerAuthenticationWithBiometrics策略,因爲使用指紋的時候往往是爲了避免輸入密碼.使用LAPolicyDeviceOwnerAuthentication策略的話如果未設置指紋或者不支持指紋有可能會彈出設備密碼輸入界面,這樣並不能簡化輸入密碼的流程.