iOS Touch ID使用教程

weixin_33912445發表於2017-11-18
支援系統和機型

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

依賴框架

在使用前我們需要匯入 LocalAuthentication.framework 這個庫
然後引入標頭檔案

#import <LocalAuthentication/LocalAuthentication.h>

這個庫必須要Xcode6並且連線的是真機,才不會提示找不到的錯誤。 如果是模擬器會提示找不到這個庫。

OC程式碼
//驗證是否支援TouchID
- (void)judgeCanTouchId
{
    LAContext *context = [LAContext new];
    
    NSError *error;
    context.localizedFallbackTitle = @"輸入密碼";
    
    if ([context canEvaluatePolicy:(LAPolicyDeviceOwnerAuthenticationWithBiometrics) error:&error])
    {
        NSLog(@"支援使用");
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:NSLocalizedString(@"通過驗證指紋解鎖",nil) reply:^(BOOL success, NSError * _Nullable error) {
            if (success) {
                NSLog(@"驗證成功");
            }
            else
            {
                /*
                 // 使用者未提供有效證書,(3次機會失敗 --身份驗證失敗)。
                 LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,
                 
                 // 認證被取消,(使用者點選取消按鈕)。
                 LAErrorUserCancel           = kLAErrorUserCancel,
                 
                 // 認證被取消,使用者點選回退按鈕(輸入密碼)。
                 LAErrorUserFallback         = kLAErrorUserFallback,
                 
                 // 身份驗證被系統取消,(比如另一個應用程式去前臺,切換到其他 APP)。
                 LAErrorSystemCancel         = kLAErrorSystemCancel,
                 
                 // 身份驗證無法啟動,因為密碼在裝置上沒有設定。
                 LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,
                 
                 // 身份驗證無法啟動,因為觸控ID在裝置上不可用。
                 LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,
                 
                 // 身份驗證無法啟動,因為沒有登記的手指觸控ID。 沒有設定指紋密碼時。
                 LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,
                 **/
                
                if (error.code == kLAErrorUserFallback) {
                    NSLog(@"使用者選擇了另一種方式");
                }
                else if (error.code == kLAErrorUserCancel)
                {
                    NSLog(@"使用者取消");
                }
                else if (error.code == kLAErrorSystemCancel)
                {
                    NSLog(@"切換前臺被取消");
                }
                else if (error.code == kLAErrorPasscodeNotSet)
                {
                    NSLog(@"身份驗證沒有設定");
                }
                else
                {
                    NSLog(@"驗證失敗");
                }
            }
        }];
    }
    else
    {
        NSLog(@"不支援使用");
    }
}
905305-b9f7e5ebf4458ab2.PNG
IMG_0858.PNG
總結

Touch ID驗證中我們並不能拿到標識,只有一個YES or NO的結果

相關文章