你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> 使用iOS 8 SDK添加Touch ID指紋識別功能

使用iOS 8 SDK添加Touch ID指紋識別功能

編輯:關於IOS

iOS 8 SDK向開發者公開了Touch ID指紋識別功能,允許App對用戶身份進行本地驗證。使用Touch ID非常簡單,只需要2步即可:

1. 檢查Touch ID是否可用。

2. 獲得指紋驗證結果。

下面以一個簡單的例子來說明如何使用Touch ID。

創建一個新的項目,向界面設計器中添加一個按鈕。使用Touch ID需要引入LocalAuthentication框架:

[plain] view plaincopy使用iOS 8 SDK添加Touch ID指紋識別功能派生到我的代碼片

  1. import LocalAuthentication

在按鈕的Touch Up Inside事件中我們首先檢查Touch ID功能是否可用:

[plain] view plaincopy使用iOS 8 SDK添加Touch ID指紋識別功能派生到我的代碼片

  1. @IBAction func useTouchIdButtonClicked(sender: AnyObject)
  2. {
  3.     //步驟1:檢查Touch ID是否可用
  4.     let authenticationContext = LAContext()
  5.     var error: NSError?
  6.     let isTouchIdAvailable = authenticationContext.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics,
  7.             error: &error)
  8.     if isTouchIdAvailable
  9.     {
  10.         NSLog("恭喜,Touch ID可以使用!")
  11.         //步驟2:獲取指紋驗證結果
  12.         authenticationContext.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, localizedReason: " 需要驗證您的指紋來確認您的身份信息", reply: {
  13.             (success, error) -> Void in
  14.             if success
  15.             {
  16.                 NSLog("恭喜,您通過了Touch ID指紋驗證!")
  17.             }
  18.             else
  19.             {
  20.                 NSLog("抱歉,您未能通過Touch ID指紋驗證!n(error)")
  21.             }
  22.         })
  23.     }
  24.     else
  25.     {
  26.         NSLog("抱歉,Touch ID不可以使用!n(error)")
  27.     }
  28. }

上面的代碼首先創建了一個LAContext實例,用於執行認證策略(Authentication Policies)。然後在該對象上調用canEvaluatePolicy方法執行某個指定的認證策略,其方法簽名為:

[plain] view plaincopy使用iOS 8 SDK添加Touch ID指紋識別功能派生到我的代碼片

  1. func canEvaluatePolicy(policy: LAPolicy, error: NSErrorPointer) -> Bool

LAPolicy枚舉目前只有一個枚舉值.DeviceOwnerAuthenticationWithBiometrics,即使用指紋生物識別方式來認證設備機主。

[plain] view plaincopy使用iOS 8 SDK添加Touch ID指紋識別功能派生到我的代碼片

  1. enum LAPolicy: Int
  2. {
  3.     case DeviceOwnerAuthenticationWithBiometrics
  4. }

注 意到canEvaluatePolicy方法返回的是Bool值,表示指定的認證策略是否允許執行。當方法返回false時,可以通過error對象來獲 取詳細的失敗原因。失敗的情況可能是設備本身不支持,例如舊版本的iPhone與iPad;運行在模擬器上;或者用戶未開啟Touch ID功能等。

例如,在iPhone 5上運行結果為:

[plain] view plaincopy使用iOS 8 SDK添加Touch ID指紋識別功能派生到我的代碼片

  1. 抱歉,Touch ID不可以使用!
  2. Optional(Error Domain=com.apple.LocalAuthentication Code=-6 "Biometry is not available on this device." UserInfo=0x15ec5a00 {NSLocalizedDescription=Biometry is not available on this device.})

在模擬器上的運行結果為:

[plain] view plaincopy使用iOS 8 SDK添加Touch ID指紋識別功能派生到我的代碼片

  1. 抱歉,Touch ID不可以使用!
  2. Optional(Error Domain=com.apple.LocalAuthentication Code=-1000 "Simulator is not supported." UserInfo=0x7ffe604b0790 {NSLocalizedDescription=Simulator is not supported.})

當允許使用Touch ID後,可以接著調用evaluatePolicy方法執行指定的認證策略,方法簽名為:

[plain] view plaincopy使用iOS 8 SDK添加Touch ID指紋識別功能派生到我的代碼片

  1. func evaluatePolicy(policy: LAPolicy, localizedReason: String!, reply: ((Bool, NSError!) -> Void)!)

調用該方法將彈出系統調用Touch ID的對話框,其中的localizedReason參數用於在對話框中提示用戶詳細的理由和原因(應言簡意赅,但不可為空或者空串)。

reply參數是一個Block,其中的Bool類型參數success表示指紋驗證是否通過,當失敗時error參數包含了具體的失敗信息。這裡有很多種失敗的情況(我自己只測試出了以下5種情況,如有遺漏還請告知):

1. 連續三次指紋識別錯誤的運行結果:

[plain] view plaincopy使用iOS 8 SDK添加Touch ID指紋識別功能派生到我的代碼片

  1. 抱歉,您未能通過Touch ID指紋驗證!
  2. Error Domain=com.apple.LocalAuthentication Code=-1 "Aplication retry limit exceeded." UserInfo=0x1740797c0 {NSLocalizedDescription=Aplication retry limit exceeded.}

2. Touch ID功能被鎖定,下一次需要輸入系統密碼時的運行結果:

[plain] view plaincopy使用iOS 8 SDK添加Touch ID指紋識別功能派生到我的代碼片

  1. 抱歉,您未能通過Touch ID指紋驗證!
  2. Error Domain=com.apple.LocalAuthentication Code=-1 "Biometry is locked out." UserInfo=0x17407dc00 {NSLocalizedDescription=Biometry is locked out.}

3. 用戶在Touch ID對話框中點擊了取消按鈕:

[plain] view plaincopy使用iOS 8 SDK添加Touch ID指紋識別功能派生到我的代碼片

  1. 抱歉,您未能通過Touch ID指紋驗證!
  2. Error Domain=com.apple.LocalAuthentication Code=-2 "Canceled by user." UserInfo=0x17006c780 {NSLocalizedDescription=Canceled by user.}

4. 在Touch ID對話框顯示過程中,背系統取消,例如按下電源鍵:

[plain] view plaincopy使用iOS 8 SDK添加Touch ID指紋識別功能派生到我的代碼片

  1. 抱歉,您未能通過Touch ID指紋驗證!
  2. Error Domain=com.apple.LocalAuthentication Code=-4 "UI canceled by system." UserInfo=0x170065900 {NSLocalizedDescription=UI canceled by system.}

5. 用戶在Touch ID對話框中點擊輸入密碼按鈕:

[plain] view plaincopy使用iOS 8 SDK添加Touch ID指紋識別功能派生到我的代碼片

  1. 抱歉,您未能通過Touch ID指紋驗證!
  2. Error Domain=com.apple.LocalAuthentication Code=-3 "Fallback authentication mechanism selected." UserInfo=0x17407e040 {NSLocalizedDescription=Fallback authentication mechanism selected.}

通過這個簡單的例子,相信您已經了解如何在您的App中添加指紋識別功能了。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved