iOS中的指紋識別開發

自iPhone 5S始,蘋果公司推出了全新生物安全識別技術---指紋識別驗證(Touch ID)。使得我們可以更快、更輕松地對設備進行安全的訪問。可貴的是,Touch ID做到了從任意角度讀取指紋數據,克服了基于密碼進行鎖定的不便。除此之外,蘋果還加入必須進行密碼校驗的場景,進一步確保安全。

最重要的一點,蘋果公司提供Touch ID給第三方應用程序使用,程序只會收到認證是否成功的通知,而無法訪問 Touch ID 或與已注冊指紋相關的數據,這一點對安全而言尤為重要。

為了獲得更高的安全性,很多銀行類、支付類APP都集成了指紋、手勢等二次驗證功能。今天我們就利用一個demo來了解下如何利用指紋識別:

1.首先判斷機型是否支持指紋識別或者指紋識別是否可用,注意:首先導入LocalAuthentication框架及其頭文件,我們可以在success回調里面做下一步的事情,比如支付寶里面的指紋支付,識別成功以后再做下一步的result界面跳轉

代碼如下:

LAContext*context = [LAContextnew];//上下文

NSError*error;

//判斷是否支持指紋識別

BOOLisInteligence = [contextcanEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics

error:&error];

if(isInteligence) {

NSString*myLocalizedReasonString =@"請按住Home鍵完成驗證";

[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:myLocalizedReasonString reply:^(BOOLsuccess, NSError *_Nullableerror) {

if(success) {

//在這里拿到識別結果的回調

//do something。。。。

}else{

switch(error.code)

{

caseLAErrorAuthenticationFailed:// Authentication was not successful, because user failed to provide valid credentials

{

NSLog(@"授權失敗");// -1 連續三次指紋識別錯誤

}

break;

caseLAErrorUserCancel:// Authentication was canceled by user (e.g. tapped Cancel button)

{

NSLog(@"用戶取消驗證Touch ID");// -2 在TouchID對話框中點擊了取消按鈕

}

break;

caseLAErrorUserFallback:// Authentication was canceled, because the user tapped the fallback button (Enter Password)

{

[[NSOperationQueue mainQueue] addOperationWithBlock:^{

NSLog(@"用戶選擇輸入密碼,切換主線程處理");// -3 在TouchID對話框中點擊了輸入密碼按鈕

}];

}

break;

caseLAErrorSystemCancel:// Authentication was canceled by system (e.g. another application went to foreground)

{

NSLog(@"取消授權,如其他應用切入,用戶自主");// -4 TouchID對話框被系統取消,例如按下Home或者電源鍵

}

break;

caseLAErrorPasscodeNotSet:// Authentication could not start, because passcode is not set on the device.

{

NSLog(@"設備系統未設置密碼");// -5

}

break;

caseLAErrorTouchIDNotAvailable:// Authentication could not start, because Touch ID is not available on the device

{

NSLog(@"設備未設置Touch ID");// -6

}

break;

caseLAErrorTouchIDNotEnrolled:// Authentication could not start, because Touch ID has no enrolled fingers

{

NSLog(@"用戶未錄入指紋");// -7

}

break;

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0

caseLAErrorTouchIDLockout://Authentication was not successful, because there were too many failed Touch ID attempts and Touch ID is now locked. Passcode is required to unlock Touch ID, e.g. evaluating LAPolicyDeviceOwnerAuthenticationWithBiometrics will ask for passcode as a prerequisite 用戶連續多次進行Touch ID驗證失敗,Touch ID被鎖,需要用戶輸入密碼解鎖,先Touch ID驗證密碼

{

NSLog(@"Touch ID被鎖,需要用戶輸入密碼解鎖");// -8 連續五次指紋識別錯誤,TouchID功能被鎖定,下一次需要輸入系統密碼

}

break;

caseLAErrorAppCancel:// Authentication was canceled by application (e.g. invalidate was called while authentication was in progress) 如突然來了電話,電話應用進入前臺,APP被掛起啦");

{

NSLog(@"用戶不能控制情況下APP被掛起");// -9

}

break;

caseLAErrorInvalidContext:// LAContext passed to this call has been previously invalidated.

{

NSLog(@"LAContext傳遞給這個調用之前已經失效");// -10

}

break;

#else

#endif

default:

{

[[NSOperationQueue mainQueue] addOperationWithBlock:^{

NSLog(@"其他情況,切換主線程處理");

}];

break;

}

}

}];

}else{

UIAlertController *alertVC= [UIAlertController alertControllerWithTitle:@"不支持指紋識別"

message:nilpreferredStyle:UIAlertControllerStyleAlert];

for(inti = 0; i < 1 ; i ++) {

UIAlertAction *action = [UIAlertAction actionWithTitle:@"確定"style: UIAlertActionStyleCancel handler:^(UIAlertAction *_Nonnullaction) {

}];

[alertVC addAction:action];

}

[selfpresentViewController:alertVC animated:YEScompletion:nil];

}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,763評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,238評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,823評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,604評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,339評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,713評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,712評論 3 445
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,893評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,448評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,201評論 3 357
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,397評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,944評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,631評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,033評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,321評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,128評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,347評論 2 377

推薦閱讀更多精彩內容