TouchID API

[toc]


- [新的博客地址](https://kunnan.blog.csdn.net)






TouchID 指紋識(shí)別是IPhone 5s設(shè)備新增的一項(xiàng)重大功能想鹰,用于數(shù)據(jù)加密和安全。而在IOS 8.0 以后也向第三方開(kāi)放了相應(yīng)功能API

https://developer.apple.com/library/ios/documentation/LocalAuthentication/Reference/LAContext_Class/index.html

https://developer.apple.com/reference/localauthentication/lacontext?language=objcobjc 語(yǔ)言示例

添加Libraries:LocalAuthentication Framework

Class

LAContext

-canEvaluatePolicy:error:

Preflights an authentication policy to see if it is possible for authentication to succeed.監(jiān)測(cè)設(shè)備是否支持TouchID,返回BOOL,并且若不支持,則在error里面返回相應(yīng)狀態(tài)

-evaluatePolicy:localizedReason:reply:

Evaluates the specified policy.TouchID驗(yàn)證狀態(tài),在block里面返回驗(yàn)證狀態(tài)(BOOL)和error;

reply:(void(^)(BOOLsuccess, NSError *__nullableerror))reply;

evaluatedPolicyDomainState

The current state of the evaluated policy domain.

TouchID API 非常簡(jiǎn)單宵呛,僅僅對(duì)本設(shè)備的TouchID進(jìn)行驗(yàn)證,但如果需要在app集成相應(yīng)的 “設(shè)備登錄/驗(yàn)證”功能或其他TouchID 的應(yīng)用夕凝,則需自行設(shè)計(jì)關(guān)聯(lián)和綁定流程(例如:設(shè)備Token宝穗、生成設(shè)備賬號(hào)/密碼、app包名/版本)码秉,綁定之后逮矛,才能使用TouchID 進(jìn)行驗(yàn)證和應(yīng)用。

實(shí)現(xiàn)的關(guān)鍵點(diǎn) ?:進(jìn)行設(shè)備(用戶)綁定

由于API并不提供關(guān)于本設(shè)備或本app任何可關(guān)聯(lián)的信息泡徙,所以集成TouchID還需自行設(shè)計(jì)關(guān)聯(lián)流程橱鹏,才能實(shí)現(xiàn)指紋登錄功能,或者指紋支付功能堪藐。

開(kāi)啟TouchID指紋密碼:進(jìn)行設(shè)備(用戶)綁定

關(guān)閉TouchID指紋密碼: 在設(shè)備(用戶)綁定之后莉兰,并且當(dāng)前正處于登錄狀態(tài),也可以將本設(shè)備取消綁定礁竞,流程基本與綁定流程

設(shè)備(指紋)應(yīng)用:

例如登陸應(yīng)用: 在設(shè)備(用戶)綁定之后糖荒,并且用戶賬號(hào)退出后,可以使用指紋登錄模捂,若當(dāng)前設(shè)備未綁定捶朵,則不會(huì)出現(xiàn)“指紋登錄”按鈕蜘矢。

例子:

指紋登陸app (賬號(hào),設(shè)備賬號(hào)/密碼)

賬戶綁定設(shè)備(生成設(shè)備賬號(hào)/密碼)

開(kāi)啟:在app登錄后综看,點(diǎn)擊開(kāi)啟“指紋登錄”品腹;

驗(yàn)證TouchID:檢測(cè)當(dāng)前設(shè)備是否支持TouchID,若支持則發(fā)起TouchID驗(yàn)證红碑;

生成設(shè)備賬號(hào)/密碼:TouchID驗(yàn)證通過(guò)后舞吭,根據(jù)當(dāng)前已登錄的賬號(hào)和硬件設(shè)備Token,生成設(shè)備賬號(hào)/密碼(規(guī)則可自定析珊,密碼要長(zhǎng)要復(fù)雜)羡鸥,并保存在keychain;

綁定:生成設(shè)備賬號(hào)/密碼后忠寻,將原賬號(hào)及設(shè)備賬號(hào)/密碼惧浴,加密后(例如RSA加密)發(fā)送到服務(wù)端進(jìn)行綁定;

成功:驗(yàn)證原賬號(hào)及設(shè)備賬號(hào)有效后奕剃,返回相應(yīng)狀態(tài)衷旅,綁定成功則完成整個(gè)TouchID(設(shè)備)綁定流程。(后臺(tái)處理邏輯)

設(shè)備(指紋)登陸

TouchID登錄:在用戶登錄界面祭饭,點(diǎn)擊“指紋登錄”芜茵;

驗(yàn)證TouchID:檢測(cè)當(dāng)前設(shè)備是否支持TouchID叙量,若支持則發(fā)起TouchID驗(yàn)證倡蝙;

登錄:讀取app在本機(jī)的設(shè)備賬號(hào)/密碼,調(diào)用設(shè)備登錄接口绞佩,發(fā)起登錄請(qǐng)求寺鸥;

成功:驗(yàn)證設(shè)備賬號(hào)/密碼后,返回相應(yīng)狀態(tài)品山,登錄成功則完成整個(gè)TouchID登錄流程胆建。(后臺(tái)處理邏輯)

注意細(xì)節(jié):

生成賬號(hào)/密碼只是隨機(jī)字符,以當(dāng)前userID 為key肘交,保存在keychain笆载;登錄時(shí)候根據(jù)keychain保存的最近一次登錄的userID,獲取賬號(hào)/密碼涯呻,進(jìn)行登錄

檢測(cè)系統(tǒng)錄入了新指紋:evaluatedPolicyDomainState這個(gè)屬性凉驻,每次指紋發(fā)生改變的時(shí)候,這個(gè)值就會(huì)變复罐,可以通過(guò)這個(gè)值的變化來(lái)判斷

代碼示例Expand source


#import

-(IBAction)touchIDClick{

LAContext*context=[[LAContext alloc]init];

NSError*error=nil;

if([contextcanEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricserror:&error]){

[contextevaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics

localizedReason:@"驗(yàn)證touchID"

reply:^(BOOL success,NSError*error){

if(error){

NSLog(@"操作失敗");

return;

}

if(success){

NSLog(@"驗(yàn)證成功");

}else{

NSLog(@"驗(yàn)證失敗");

}

}];

}else{

NSLog(@"設(shè)備不支持");

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涝登,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子效诅,更是在濱河造成了極大的恐慌胀滚,老刑警劉巖趟济,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異咽笼,居然都是意外死亡顷编,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)剑刑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)勾效,“玉大人,你說(shuō)我怎么就攤上這事叛甫〔愎” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵其监,是天一觀的道長(zhǎng)萌腿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)抖苦,這世上最難降的妖魔是什么毁菱? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮锌历,結(jié)果婚禮上贮庞,老公的妹妹穿的比我還像新娘。我一直安慰自己究西,他們只是感情好窗慎,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著卤材,像睡著了一般遮斥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扇丛,一...
    開(kāi)封第一講書(shū)人閱讀 52,785評(píng)論 1 314
  • 那天术吗,我揣著相機(jī)與錄音,去河邊找鬼帆精。 笑死较屿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卓练。 我是一名探鬼主播隘蝎,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼昆庇!你這毒婦竟也來(lái)了末贾?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤整吆,失蹤者是張志新(化名)和其女友劉穎拱撵,沒(méi)想到半個(gè)月后辉川,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拴测,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年乓旗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片集索。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屿愚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出务荆,到底是詐尸還是另有隱情妆距,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布函匕,位于F島的核電站娱据,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏盅惜。R本人自食惡果不足惜中剩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抒寂。 院中可真熱鬧结啼,春花似錦、人聲如沸屈芜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沸伏。三九已至糕珊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間毅糟,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工澜公, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姆另,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓坟乾,卻偏偏與公主長(zhǎng)得像迹辐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子甚侣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容