iOS Touch ID 使用詳情

簡單介紹

支持系統(tǒng)和機型

iOS系統(tǒng)的指紋識別功能最低支持的機型為iPhone 5s,最低支持系統(tǒng)為iOS 8,雖然安裝iOS 7系統(tǒng)的5s機型可以使用系統(tǒng)提供的指紋解鎖功能,但由于API并未開放,所以理論上第三方軟件不可使用。

依賴框架
LocalAuthentication.framework
import <LocalAuthentication/LocalAuthentication.h>

注意事項
做iOS 8以下版本適配時,務(wù)必進行API驗證,避免調(diào)用相關(guān)API引起崩潰。

使用類
LAContext指紋驗證操作對象

代碼實現(xiàn)


//初始化上下文對象

    LAContext* context = [[LAContext alloc] init];    //錯誤對象
    NSError  * error = nil;
    NSString * result = @"驗證";
    context.localizedFallbackTitle = @"123";   

    //判斷設(shè)備是否支持touchID
    BOOL isSupport = [context canEvaluatePolicy:
    LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error];
    if (isSupport) {
        //指紋識別函數(shù)
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics 
        localizedReason:@"用 Touch ID 登錄" 
        reply:^(BOOL success, NSError *error) {
            
            
          //如果成功
            if (success) {
                NSLog(@"驗證成功");
            }else{
                switch (error.code) {
                    case LAErrorSystemCancel:
                    {
                        NSLog(@"Authentication was cancelled by the system");
                        //切換到其他APP,系統(tǒng)取消驗證Touch ID
                        break;
                    }
                    case LAErrorUserCancel:
                    {
                        NSLog(@"Authentication was cancelled by the user");
                        //用戶取消驗證Touch ID
                        break;
                    }
                    case LAErrorUserFallback:
                    {
                        NSLog(@"User selected to enter custom password");
                        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                            //用戶選擇輸入密碼,切換主線程處理
                        }];
                        break;
                    }
                }
            }
        }];

} else {
  switch (error.code) {
        case LAErrorTouchIDNotEnrolled:
        {
            NSLog(@"TouchID is not enrolled");
            break;
        }
        case LAErrorPasscodeNotSet:
        {
            NSLog(@"A passcode has not been set");
            break;
        }
        default:
        {
            NSLog(@"TouchID not available");
            break;
        }
    }
    
    NSLog(@"%@",error.localizedDescription);
}
    

下面是LAError中每個枚舉對應(yīng)的含義

typedef NS_ENUM(NSInteger, LAError){
      
 //授權(quán)失敗    
    LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,         
//用戶取消Touch ID授權(quán)   
    LAErrorUserCancel           = kLAErrorUserCancel,         
//用戶選擇輸入密碼     
    LAErrorUserFallback         = kLAErrorUserFallback,        
 //系統(tǒng)取消授權(quán)(例如其他APP切入)    
    LAErrorSystemCancel         = kLAErrorSystemCancel,         
//系統(tǒng)未設(shè)置密碼   
     LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,         
//設(shè)備Touch ID不可用,例如未打開
     LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,         
//設(shè)備Touch ID不可用,用戶未錄入
     LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,
  
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,716評論 25 709
  • 成長是什么?是一場冒險,是一場豪賭。 有人賭的贏,有人輸?shù)囊粩⊥康兀腥?,渾渾噩噩不敢下注,散場也沒剩下剩下什么。...
    Hardwood閱讀 201評論 0 0
  • 那年,一個人獨自旅行,為了那段抹不去的傷悲,忘不了的痛徹心扉。當(dāng)最后一份守望隨那年的雨消蝕殆盡的時候...
    北堂書抄閱讀 477評論 6 8
  • 話術(shù)板塊 歡迎加入內(nèi)部交流圈子QQ群【225332768】(驗證:jx)更多干貨分享 1、賣服務(wù):態(tài)...
    勁祥閱讀 5,220評論 0 3

友情鏈接更多精彩內(nèi)容