欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS8中如何集成TouchID指紋傳感器功能

  發(fā)布時(shí)間:2014-10-16 08:40:51   作者:佚名   我要評(píng)論
Touch ID的指紋傳感器,大家可以利用它來完成應(yīng)用程序的登錄機(jī)制或者通過它保護(hù)應(yīng)用程序當(dāng)中的敏感數(shù)據(jù)。在今天的教程中,我們將共同了解如何將整套選項(xiàng)應(yīng)用在自己的設(shè)計(jì)成果當(dāng)中、我們能夠從設(shè)備中獲取哪些數(shù)據(jù)并一步步引導(dǎo)各位構(gòu)建起一款示例應(yīng)用程序

2013年9月,蘋果為當(dāng)時(shí)發(fā)布的最新iPhone產(chǎn)品配備了一系列硬件升級(jí)方案。在iPhone 5s當(dāng)中,最具創(chuàng)新特性的機(jī)制無疑要數(shù)圍繞Home按鈕設(shè)計(jì)的超薄金屬圈,也就是被稱為Touch ID的指紋傳感器。開發(fā)人員隨后開始紛紛將其API作為突破口,希望能在自己的應(yīng)用程序中引入這一最新功能。如今一年已經(jīng)過去,iOS 8提供的新型框架則讓開發(fā)者能夠更加得心應(yīng)手地使用這套指紋傳感裝置。

這套Local Authentication框架能夠輕松實(shí)現(xiàn)用戶身份驗(yàn)證,大家可以利用它來完成應(yīng)用程序的登錄機(jī)制或者通過它保護(hù)應(yīng)用程序當(dāng)中的敏感數(shù)據(jù)。在今天的教程中,我們將共同了解如何將整套選項(xiàng)應(yīng)用在自己的設(shè)計(jì)成果當(dāng)中、我們能夠從設(shè)備中獲取哪些數(shù)據(jù)并一步步引導(dǎo)各位構(gòu)建起一款示例應(yīng)用程序。

要完成本教程,大家需要安裝Xcode 6以創(chuàng)建新項(xiàng)目,此外各位還需要一臺(tái)配備Touch ID的設(shè)備來對(duì)自己創(chuàng)建完成的示例應(yīng)用進(jìn)行測試。

1. Touch ID

Touch ID指的是被安裝在iPhone 5s Home按鈕當(dāng)中的指紋傳感裝置。它的出現(xiàn)旨在幫助用戶更為輕松地完成身份識(shí)別流程,從而鼓勵(lì)使用者盡可能多地使用保護(hù)機(jī)制。大家在每臺(tái)設(shè)備上最多能夠配置五種指紋識(shí)別信息。到目前為止,Touch ID已經(jīng)能夠被用于完成設(shè)備解鎖并完成在iTunes Store、App Store以及iBooks Store當(dāng)中的購買操作。在進(jìn)一步探討如何將其引入大家自己的應(yīng)用程序之前,我們首先需要對(duì)這款傳感器本身進(jìn)行一番了解。

Touch ID傳感器能夠以每英寸500像素的分辨率對(duì)用戶指紋進(jìn)行掃描,并將指紋圖案劃歸為三種類型之一:拱型、旋渦型以及環(huán)型。這款傳感器在設(shè)計(jì)上充分考慮到了便捷性需求,大家可以從任何角度對(duì)手指進(jìn)行掃描、而且當(dāng)前掃描結(jié)果能夠與任何方向的原有指紋記錄進(jìn)行正確匹配。

蘋果公司宣稱,對(duì)于任何一個(gè)給定指紋圖案、Touch ID發(fā)生識(shí)別錯(cuò)誤的機(jī)率僅為五萬分之一,這樣的保護(hù)效果明顯優(yōu)于原本的四位數(shù)PIN碼機(jī)制——畢竟其內(nèi)容只能在0001到9999之間提供一萬種可能性組合。不過蘋果沒有明顯指出的是,在某些情況下我們可能無法使用自己的指紋順利實(shí)現(xiàn)解鎖操作,例如在游泳之后手指紋理褶皺發(fā)生變化時(shí)。

如果大家打算使用Touch ID,那么最重要的一點(diǎn)就是首先考慮到那些用戶可能無法使用手指進(jìn)行驗(yàn)證的使用場景。由于蘋果不再允許我們使用設(shè)備內(nèi)自帶的PIN碼驗(yàn)證機(jī)制,因此如果Touch ID無法正常起效、大家最好能在應(yīng)用程序當(dāng)中額外建立一套密碼匹配方案。

2. 安全注意事項(xiàng)

指令傳感器帶來的最大問題在于,用戶的隱私會(huì)從根本上受到侵犯。如果大家的密碼內(nèi)容被泄露出去,那么各位完全可以通過修改及時(shí)挽救、惡意人士根本無法繼續(xù)利用其訪問用戶的敏感數(shù)據(jù)。然而如果大家的指紋信息,或者是蘋果的指紋內(nèi)容算法遭到外泄,我們明顯沒辦法快速對(duì)其進(jìn)行變更。

Local Authentication框架負(fù)責(zé)處理所有用戶身份驗(yàn)證的重任。當(dāng)與Touch ID結(jié)合起效時(shí),最重要的就是要確保該框架不會(huì)透露任何與用戶有關(guān)的細(xì)節(jié)、而且不會(huì)有數(shù)據(jù)從設(shè)備中被傳輸出去。然而,開發(fā)人員可以利用這套框架來檢查特定用戶是否被允許使用對(duì)應(yīng)應(yīng)用程序。

如果大家已經(jīng)比較熟悉OAuth規(guī)范,就會(huì)發(fā)現(xiàn)這兩種驗(yàn)證處理方式其實(shí)頗為相似。我們要求第三方對(duì)用戶身份進(jìn)行審核,如果我們對(duì)第三方充分信任,則可以根據(jù)其反饋直接向該用戶提供認(rèn)證憑證。

3. LAContext

Local Authentication框架的核心就是LAContext類。開發(fā)人員可以利用LAContext實(shí)例來對(duì)安全策略加以評(píng)估。截至本文發(fā)稿時(shí),這也是惟一可資使用的管理策略。它會(huì)利用Touch ID傳感器來檢查用戶的身份是否正是設(shè)備持有者。未來其它安全管理策略可能將陸續(xù)推出。舉例來說,蘋果公司可能會(huì)引入一類無權(quán)限角色、只允許他們對(duì)特定資源加以訪問。

如果這套框架無法完成驗(yàn)證,則會(huì)提供錯(cuò)誤提示信息。設(shè)備無法完成驗(yàn)證的理由可能包括以下幾種:

LAErrorTouchIDNotAvailable 設(shè)備本身并不具備指紋傳感裝置。 LAErrorPasscodeNotSet 設(shè)備上并不具備密碼設(shè)置信息,也就是說Touch ID功能處于被禁用狀態(tài)。 LAErrorTouchIDNotEnrolled 已經(jīng)設(shè)定有密碼機(jī)制,但設(shè)備配置當(dāng)中還沒有保存過任何指紋內(nèi)容。

如果遇到了包含上述錯(cuò)誤碼的錯(cuò)誤提示信息,大家就需要利用其它一些方法來完成對(duì)用戶的身份驗(yàn)證。在這種情況下,各位已經(jīng)不能單單依賴Touch ID來完成保護(hù)工作了。

下面讓我們一起創(chuàng)建一款示例應(yīng)用程序,共同了解如何對(duì)Local Authentication框架加以使用。

4. 項(xiàng)目設(shè)置

第一步

打開Xcode并在File菜單內(nèi)選擇New > Project…。接下來在iOS Application模板列表中選擇Single View Application(單視圖應(yīng)用程序)并點(diǎn)擊Next。

第二步

為我們的項(xiàng)目輸入一個(gè)名稱,我叫自己的應(yīng)用命名為Auth。接下來輸入組織名稱、公司標(biāo)識(shí)以及類前綴。在Devices列表中選擇iPhone,然后點(diǎn)擊Next,接下來為項(xiàng)目選擇一個(gè)文件保存位置。

第三步

點(diǎn)擊ViewController.h并定義一種新操作,authenticateButtonTapped,它會(huì)觸發(fā)整個(gè)驗(yàn)證流程。ViewController類的界面外觀應(yīng)該如下所示:

  1. #import <UIKit/UIKit.h> @interface ViewController : UIViewController 
  2. - (IBAction)authenticateButtonTapped:(id)sender; @end 

第四步

打開Main.storyboard并將一個(gè)Button拖拽到控制器的視圖當(dāng)中。變更該按鈕的標(biāo)簽以使其讀取為Authneticate。

第五步

右鍵點(diǎn)擊該按鈕以顯示Connections Inspector。點(diǎn)擊Touch Up Inside事件左側(cè)的加號(hào)并選擇用于容納該按鈕的視圖控制器。這時(shí)屏幕上會(huì)顯示出新的菜單,大家需要在這里選擇我們之前已經(jīng)設(shè)置完成的操作。

5. 對(duì)用戶身份進(jìn)行驗(yàn)證第一步

開啟ViewController.m以激活authenticateButtonTapped方法。在文件開頭位置添加以下面向Local Authentication框架的導(dǎo)入語句。

  1. #import <LocalAuthentication/LocalAuthentication.h> 

第二步

在authenticateButtonTapped方法當(dāng)中,我們創(chuàng)建一套背景信息并檢測該背景是否能夠?qū)APolicyDeviceOwnerAuthenticationWithBiometrics策略加以評(píng)估,如果不同則顯示錯(cuò)誤信息。

  1. - (IBAction)authenticateButtonTapped:(id)sender {     LAContext *context = [[LAContext alloc] init]; 
  2.      NSError *error = nil; 
  3.      if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { 
  4.          // Authenticate User 
  5.      } else { 
  6.          UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
  7.                                                         message:@"Your device cannot authenticate using TouchID." delegate:nil 
  8. cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
  9.         [alert show];     } 

第三步

如果該LAContext對(duì)象能夠利用Touch ID進(jìn)行身份驗(yàn)證,那么我們就可以對(duì)用戶身份加以審核了。如果沒有出現(xiàn)錯(cuò)誤提示信息,我們就能判斷當(dāng)前用戶是否屬于設(shè)備持有者。最后通過以下代碼實(shí)施authenticateButtonTapped方法。

  1. - (void)authenicateButtonTapped:(id)sender { 
  2.    LAContext *context = [[LAContext alloc] init]; 
  3.    NSError *error = nil; 
  4.    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) { 
  5.        [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics 
  6.                localizedReason:@"Are you the device owner?" 
  7.                          reply:^(BOOL success, NSError *error) { 
  8.            if (error) { 
  9.                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
  10. message:@"There was a problem verifying your identity." 
  11. delegate:nil                                                      cancelButtonTitle:@"Ok" 
  12.                                                      otherButtonTitles:nil];                [alert show];                
  13. return           }            if (success) {               
  14.  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success" 
  15.                                                              
  16.   message:@"You are the device owner!" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];                
  17. [alert show];            } else {                
  18. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"You are not the device owner." delegate:nilcancelButtonTitle:@"Ok" 
  19. otherButtonTitles:nil]; 
  20.                [alert show]; 
  21.            } 
  22.        }]; 
  23.    } else { 
  24.        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"                                                      
  25.   message:@"Your device cannot authenticate using TouchID."                                                       
  26. delegate:nil                                              
  27. cancelButtonTitle:@"Ok"                                              
  28. otherButtonTitles:nil];        
  29. [alert show];    } }

6. 構(gòu)建并運(yùn)行

下面我們需要在配備有指紋傳感器的物理設(shè)備上構(gòu)建并運(yùn)行這款應(yīng)用程序,并通過點(diǎn)觸Home按鈕進(jìn)行身份驗(yàn)證。只要大家的設(shè)備能夠切實(shí)支持Touch ID功能,應(yīng)用程序中的驗(yàn)證機(jī)制應(yīng)該就能得到正確通過。當(dāng)各位將手指放在傳感器上時(shí),應(yīng)用程序就可以正確識(shí)別出用戶是否屬于該設(shè)備的合法持有者。

總結(jié)

在今天的教程中,我們了解了iOS 8新近加入了Local Authentication框架。通過對(duì)用戶身份進(jìn)行查驗(yàn),LAContext類允許用戶在無法直接向應(yīng)用程序本身提供任何敏感數(shù)據(jù)的前提下完成識(shí)別工作。

英文原文鏈接:iOS 8: Integrating Touch ID

相關(guān)文章

最新評(píng)論