自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS 8 中如何集成 Touch ID 功能

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

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

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

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

1. Touch ID

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

[[121178]]

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

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

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

2. 安全注意事項

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

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

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

3. LAContext

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

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

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

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

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

4. 項目設(shè)置

***步

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

第二步

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

第三步

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

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

第四步

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

第五步

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

5. 對用戶身份進行驗證

***步

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

  1. #import <LocalAuthentication/LocalAuthentication.h> 

第二步

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

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

第三步

如果該LAContext對象能夠利用Touch ID進行身份驗證,那么我們就可以對用戶身份加以審核了。如果沒有出現(xiàn)錯誤提示信息,我們就能判斷當(dāng)前用戶是否屬于設(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 
  12.                                                      cancelButtonTitle:@"Ok" 
  13.                                                      otherButtonTitles:nil]; 
  14.                [alert show]; 
  15.                return
  16.            } 
  17.            if (success) { 
  18.                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success" 
  19.                                                                message:@"You are the device owner!" 
  20. delegate:nil 
  21. cancelButtonTitle:@"Ok" 
  22. otherButtonTitles:nil]; 
  23.                [alert show]; 
  24.            } else { 
  25.                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
  26. message:@"You are not the device owner." 
  27. delegate:nil
  28. cancelButtonTitle:@"Ok" 
  29. otherButtonTitles:nil]; 
  30.                [alert show]; 
  31.            } 
  32.        }]; 
  33.    } else { 
  34.        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
  35.                                                        message:@"Your device cannot authenticate using TouchID." 
  36.                                                       delegate:nil 
  37.                                              cancelButtonTitle:@"Ok" 
  38.                                              otherButtonTitles:nil]; 
  39.        [alert show]; 
  40.    } 
  41. }

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

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

總結(jié)

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

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

核子可樂譯

責(zé)任編輯:閆佳明 來源: 51CTO譯文
相關(guān)推薦

2014-10-13 09:57:31

SwiftTouch ID驗證iOS 8

2015-04-10 19:59:31

iOS8.3Touch ID

2021-07-27 07:15:11

蘋果Touch IDiOS

2018-12-04 14:46:03

蘋果Face IDTouch ID

2011-05-11 10:28:03

2024-10-25 15:40:15

2011-09-05 10:39:03

Sencha Touc離線存儲數(shù)據(jù)庫

2021-02-01 16:55:13

iPhoneTouch ID蘋果

2011-07-22 13:23:56

IOS UI ScrollView

2011-01-18 09:47:33

自增ID

2011-06-15 16:11:51

UIKitCocoa TouchiOS

2011-06-27 15:39:51

Cocoa Touch

2011-08-17 10:09:25

iPhone開發(fā)UIWebViewTouch事件

2011-11-16 13:14:02

Sencha TouciOS本地應(yīng)用

2012-05-09 09:31:00

Windows 8網(wǎng)絡(luò)ID

2011-08-03 17:32:17

IOS UIScrollVi touch

2015-11-16 15:26:40

chrome3DiOS

2014-08-15 09:41:52

Ubuntu

2017-11-17 07:53:10

GoogleiPhone應(yīng)用程序

2011-05-31 15:41:00

Cocoa TouchCocoaiOS
點贊
收藏

51CTO技術(shù)棧公眾號