實現TouchID指紋解鎖(圖文並茂)

weixin_34007291發表於2017-08-07

簡介

iOS8.0之後Touch ID的API開發給開發,最低支援的機型為iPhone 5s,最低支援系統為ios 8,雖然安裝iOS 7系統的5s機型可以使用系統提供的指紋解鎖功能,但由於API並未開放,所以理論上第三方軟體不可使用。

依賴庫

#import <LocalAuthentication/LocalAuthentication.h>

實現過程

  • 使用類
    LAContext 指紋驗證操作物件

  • 判斷裝置是否支援TouchID的

- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error __attribute__((swift_error(none)));
  • 呼叫TouchID驗證
- (void)evaluatePolicy:(LAPolicy)policy
      localizedReason:(NSString *)localizedReason
                reply:(void(^)(BOOL success, NSError * __nullable error))reply;

  • 屬性設定

localizedFallbackTitle:用於設定左邊的按鈕的名稱,預設是Enter Password.
localizedReason:用於設定提示語,表示為什麼要使用Touch ID

程式碼

//初始化上下文物件
    LAContext* context = [[LAContext alloc] init];
    //錯誤物件
    NSError* error = nil;
    
    //首先使用canEvaluatePolicy 判斷裝置支援狀態
    if ([context canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error])
    {
        //支援指紋驗證
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                localizedReason:@"我要解鎖"
                          reply:^(BOOL succes, NSError *error) {
             if (succes) {
                 //驗證成功,返回主執行緒處理
                 NSLog(@"驗證成功");
                 dispatch_async(dispatch_get_main_queue(), ^{
                     backSucces(succes);
                 });
                 
             } else {
                 NSLog(@"驗證失敗");
                 NSLog(@"%@",error.localizedDescription);
                
             }
         }];
    }else
    {
        NSLog(@"不支援指紋識別,LOG出錯誤詳情");
        NSLog(@"%@",error.localizedDescription);
       
        
    }

幾乎沒有什麼難度,使用確實很簡單!希望可以幫到大家demo

相關文章