iOS 8使用Touch ID進行使用者認證

來源:互聯網
上載者:User

標籤:ios   指紋識別   touch id   

   iOS 8的SDK開放了Touch ID的介面.從WWDC的視頻中可以看到Touch ID應用在兩個方面:用於Key Chain加密和用於授權.iOS 8正式版發布以後我們可以看到Evernote的iOS app已經整合了該功能.下面來看看如何?使用Touch ID進行身份認證.  其實很簡單,用於身份認證的所有的介面都在LocalAuthentication framework中, 該framework實際上只有三個標頭檔:  LAContext.h  LAError.h  LAPublicDefines.h  而實際用到的函數也只有兩個:  // 用來判斷裝置是否支援Touch ID  - (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)error;  // 真正驗證身份的函數  - (void)evaluatePolicy:(LAPolicy)policy       localizedReason:(NSString *)localizedReason
                 reply:(void(^)(BOOL success, NSError *error))reply;
  上述兩個函數都是LAContext的member function.目前LAPolicy只有一個值: LAPolicyDeviceOwnerAuthenticationWithBiometrics.

  如果canEvaluatePolicy返回YES,表示裝置支援指紋識別,那麼便可以調用evaluatePolicy:函數進行指紋識別了.調用evaluatePolicy函數後會彈出一個alert,如:



  該alert可定製的只有兩處:  1.”To access your photos”提示文字是由localizedReason參數指定的,用來向使用者說明使用Touch ID的目的.  2.”Enter Password”可由LAContext的localizedFallbackTitle屬性設定(LAContext目前只有這一個屬性),如果不設定的話,預設是”Enter Password”.值得注意的是,如果該屬性設定為@“”(Null 字元串),該按鈕會被隱藏,Evernote應該就是這麼做的.  其他的免談,當然更別提擷取使用者的指紋資料了.  理論上三種情況下會退出驗證(alert會被dismiss,reply回調會被調用):  1.使用者指紋通過驗證  2.使用者點擊”Enter Password”按鈕  3.使用者點擊”Cancel”按鈕  還有一種情況:使用者輸入了錯誤的指紋.這種情況下,該alert不會被dismiss,其標題會由”Touch ID”改為”Try Again”,有彈簧狀的動畫效果過渡.好了,代碼如下(不要忘了引入標頭檔 <LocalAuthentication/LocalAuthentication.h>):    LAContext *context = [LAContext new];
   
    NSError *error;
    context.localizedFallbackTitle = @"";
   
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
        NSLog(@"Touch ID is available.");
        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics                 localizedReason:NSLocalizedString(@"Use Touch ID to log in.", nil)                           reply:^(BOOL success, NSError *error) {
            if (success) {
                NSLog(@"Authenticated using Touch ID.");
            } else {                if (error.code == kLAErrorUserFallback) {                    NSLog(@"User tapped Enter Password");
                } else if (error.code == kLAErrorUserCancel) {
                    NSLog(@"User tapped Cancel");
                } else {
                    NSLog(@"Authenticated failed.");            }
        }];
    } else {
        NSLog(@"Touch ID is not available: %@", error);
    }

iOS 8使用Touch ID進行使用者認證

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.