iOS Touch Id 開發

Touch Id

Touch Id是iPhone5S後加入的一項新的功能,也就是你們熟知的指紋識別技術。你們用得最多的多是手機的解屏操做,不用在和之前同樣輸入手機的四位數密碼進行驗證。一方面不用擔憂密碼被別人看到,另外一方面也方便了本身的操做。iOS8後蘋果開放了Touch Id的API給開發者,這也給咱們的app帶來了新的體驗。安全

使用

Touch Id的API很是的簡單也好理解,在使用前咱們須要導入LocalAuthentication這個庫。
1.pngapp

首先來看下頭文件的定義:atom

//驗證設備是否支持Touch Id
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error;
//進行驗證的回調
- (void)evaluatePolicy:(LAPolicy)policy
       localizedReason:(NSString *)localizedReason
                 reply:(void(^)(BOOL success, NSError *error))reply;
//取消Touch Id驗證的按鈕的標題,默認標題是輸入密碼
@property (nonatomic, copy) NSString *localizedFallbackTitle;

代碼使用示例

LAContext *laContext = [[LAContext alloc] init];
    NSError *error;

    if ([laContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {

        [laContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                       localizedReason:@"Touch Id Test"
                                 reply:^(BOOL success, NSError *error) {
                                     if (success) {
                                         NSLog(@"success to evaluate");
                                         //do your work
                                     }
                                     if (error) {
                                         NSLog(@"---failed to evaluate---error: %@---", error.description);
                                         //do your error handle
                                     }
                                 }];
    }
    else {
        NSLog(@"==========Not support :%@", error.description);
        //do your error handle
    }

這樣咱們就完成了一個Touch Id的驗證功能。當咱們點擊按鈕進行調用的時候,就會彈出驗證的對話框:
2.png
彈窗目前還不能自定義,都是統一的,第一行是app的名字+Touch Id, 第二行是須要用Touch Id的理由。在用戶進行操做後,咱們能夠在回調的block那邊處理本身的業務邏輯。lua

錯誤處理

typedef NS_ENUM(NSInteger, LAError)
{
    //用戶驗證沒有經過,好比提供了錯誤的手指的指紋
    LAErrorAuthenticationFailed = kLAErrorAuthenticationFailed,

    // 用戶取消了Touch Id驗證
    LAErrorUserCancel           = kLAErrorUserCancel,

    //用戶不想進行Touch Id驗證,想進行輸入密碼操做
    LAErrorUserFallback         = kLAErrorUserFallback,

    // 系統終止了驗證
    LAErrorSystemCancel         = kLAErrorSystemCancel,

    // 用戶沒有在設備Settings中設定密碼
    LAErrorPasscodeNotSet       = kLAErrorPasscodeNotSet,

    // 設備不支持Touch Id
    LAErrorTouchIDNotAvailable  = kLAErrorTouchIDNotAvailable,

    // 設備沒有進行Touch Id 指紋註冊
    LAErrorTouchIDNotEnrolled   = kLAErrorTouchIDNotEnrolled,
} NS_ENUM_AVAILABLE(10_10, 8_0);

在block回調那邊,咱們須要對每種錯誤進行處理,以便獲得更好的用戶體驗。code

總結

從上面的代碼中咱們也能夠看到,Touch Id驗證中咱們並不能拿到標識,只有一個YES or NO的結果,只能用來代表當前用戶有權限使用這設備。正常狀況下,咱們的手機裏面的帳號信息都是本身的,因此在必定方面的確有加固安全,驗證和方便的功能。blog

相關文章
相關標籤/搜索