天天看點

swift-內建touch id功能 指紋驗證

在這裡寫了一個指紋驗證的類,公開了一個類方法來自定義輸入提醒使用者的内容,随時調用即可完成touch id驗證功能

1 建立一個類檔案:

fingerUnlock繼承于NSObject就可以

2 在這個檔案中導入需要的系統架構 

import LocalAuthentication

3 直接粘代碼就OK,下面這個方法是自己随便寫的一個類方法  主要是為了輸入提醒文字并驗證

class func userFigerprintAuthenticationTipStr(tipsStr: String) {

        let context = LAContext()

        var error: NSError?

        // 判斷裝置是否支援指紋解鎖

        if context.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error: &error) {

            context.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: tipsStr, reply: { (success, error) in

                if success {

                    print("驗證成功")

                } else {

                    switch Int32(error!.code) {

                        // 身份驗證失敗

                        case kLAErrorAuthenticationFailed:

                            print("LAErrorAuthenticationFailed")

                        // 使用者取消

                        case kLAErrorUserCancel :

                            print("kLAErrorUserCancel")

                            break

                        //驗證失敗

                        case kLAErrorUserFallback:

                            print("LAErrorUserFallback")

                            break;

                        // 被系統取消,例如按下電源鍵

                        case kLAErrorSystemCancel:

                            print("kLAErrorSystemCancel")

                            break;

                        // 裝置上并不具備密碼設定資訊,也就是說Touch ID功能處于被禁用狀态

                        case kLAErrorPasscodeNotSet:

                            print("kLAErrorPasscodeNotSet")

                            break;

                        // 裝置本身并不具備指紋傳感裝置

                        case kLAErrorTouchIDNotAvailable:

                            print("kLAErrorTouchIDNotAvailable")

                            break;

                        // 已經設定有密碼機制,但裝置配置當中還沒有儲存過任何指紋内容

                        case kLAErrorTouchIDNotEnrolled:

                            print("kLAErrorTouchIDNotEnrolled")

                            break;

                        // 輸入次數過多驗證被鎖

                        case kLAErrorTouchIDLockout:

                            print("kLAErrorTouchIDLockout")

                            break;

                        // app取消驗證

                        case kLAErrorAppCancel:

                            print("LAErrorAppCancel")

                            break;

                        // 無效的上下文

                        case kLAErrorInvalidContext:

                            print("LAErrorAppCancel")

                            break;

                        default:

                        break

                    }

                }

            })

        } else {

            print("您的裝置不支援touch id")

        }

    }

4 在需要用到touch id功能的地方調用就可以 例如:

fingerUnlock.userFigerprintAuthenticationTipStr("請把輸入指紋的手指放在Home鍵上")