iOS 8 SDK向開發者公開了Touch ID指紋識別功能,允許App對用戶身份進行本地驗證。使用Touch ID非常簡單,只需要2步即可:
1. 檢查Touch ID是否可用。
2. 獲得指紋驗證結果。
下面以一個簡單的例子來說明如何使用Touch ID。
創建一個新的項目,向界面設計器中添加一個按鈕。使用Touch ID需要引入LocalAuthentication框架:
[plain] view plaincopy在按鈕的Touch Up Inside事件中我們首先檢查Touch ID功能是否可用:
[plain] view plaincopy上面的代碼首先創建了一個LAContext實例,用於執行認證策略(Authentication Policies)。然後在該對象上調用canEvaluatePolicy方法執行某個指定的認證策略,其方法簽名為:
[plain] view plaincopyLAPolicy枚舉目前只有一個枚舉值.DeviceOwnerAuthenticationWithBiometrics,即使用指紋生物識別方式來認證設備機主。
[plain] view plaincopy注 意到canEvaluatePolicy方法返回的是Bool值,表示指定的認證策略是否允許執行。當方法返回false時,可以通過error對象來獲 取詳細的失敗原因。失敗的情況可能是設備本身不支持,例如舊版本的iPhone與iPad;運行在模擬器上;或者用戶未開啟Touch ID功能等。
例如,在iPhone 5上運行結果為:
[plain] view plaincopy在模擬器上的運行結果為:
[plain] view plaincopy當允許使用Touch ID後,可以接著調用evaluatePolicy方法執行指定的認證策略,方法簽名為:
[plain] view plaincopy調用該方法將彈出系統調用Touch ID的對話框,其中的localizedReason參數用於在對話框中提示用戶詳細的理由和原因(應言簡意赅,但不可為空或者空串)。
reply參數是一個Block,其中的Bool類型參數success表示指紋驗證是否通過,當失敗時error參數包含了具體的失敗信息。這裡有很多種失敗的情況(我自己只測試出了以下5種情況,如有遺漏還請告知):
1. 連續三次指紋識別錯誤的運行結果:
[plain] view plaincopy2. Touch ID功能被鎖定,下一次需要輸入系統密碼時的運行結果:
[plain] view plaincopy3. 用戶在Touch ID對話框中點擊了取消按鈕:
[plain] view plaincopy4. 在Touch ID對話框顯示過程中,背系統取消,例如按下電源鍵:
[plain] view plaincopy5. 用戶在Touch ID對話框中點擊輸入密碼按鈕:
[plain] view plaincopy通過這個簡單的例子,相信您已經了解如何在您的App中添加指紋識別功能了。