iOS:Touch ID簡(jiǎn)易開(kāi)發(fā)教程-仿alipay

效果圖

touch_ID效果圖

前言

2013年9月,蘋(píng)果為當(dāng)時(shí)發(fā)布的最新iPhone產(chǎn)品配備了一系列硬件升級(jí)方案。在iPhone 5s當(dāng)中,最具創(chuàng)新特性的機(jī)制無(wú)疑要數(shù)圍繞Home按鈕設(shè)計(jì)的超薄金屬圈,也就是被稱(chēng)為T(mén)ouch ID的指紋傳感器。這套Local Authentication框架能夠輕松實(shí)現(xiàn)用戶身份驗(yàn)證,大家可以利用它來(lái)完成應(yīng)用程序的登錄機(jī)制或者通過(guò)它保護(hù)應(yīng)用程序當(dāng)中的敏感數(shù)據(jù)。

教程

1.導(dǎo)入對(duì)應(yīng)的框架頭文件

剛才我們說(shuō)到,Touch ID指紋傳感器所屬Local Authentication框架.所以,第一步,我們需要導(dǎo)入頭文件

#import <LocalAuthentication/LocalAuthentication.h>

2.判斷設(shè)置是否支持Touch ID 或者 本機(jī)是否已經(jīng)錄入指紋

這里我們需要使用到LAContext類(lèi),LAContext就是Touch ID

  • 2016.3.14 一個(gè)小補(bǔ)充, 之前有朋友給我留言和在我QQ上問(wèn)我, 如果點(diǎn)擊了輸入密碼,怎么調(diào)用系統(tǒng)的密碼框.其實(shí)很簡(jiǎn)單,把下面代碼的LAPolicyDeviceOwnerAuthenticationWithBiometrics改成LAPolicyDeviceOwnerAuthentication即可.點(diǎn)進(jìn)頭文件看一下,就了然了...
    if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
            // 進(jìn)行指紋驗(yàn)證操作,請(qǐng)看第三步
    }else {
        if (self.isSimulator) { // 判斷是否是模擬器Simulator
            [[[UIAlertView alloc] initWithTitle:@"提示" message:@"請(qǐng)用真機(jī)測(cè)試~" delegate:nil cancelButtonTitle:@"好的" otherButtonTitles:nil, nil] show];
        }else{ // 不支持Touch ID操作
            [[[UIAlertView alloc] initWithTitle:@"提示" message:@"不支持Touch ID~" delegate:nil cancelButtonTitle:@"好的" otherButtonTitles:nil, nil] show];
        }
    }

tip: 判斷當(dāng)前設(shè)置是否是模擬器Simulator

- (BOOL)isSimulator{
     struct utsname systemInfo;
     uname(&systemInfo);
     NSString *deviceMachine = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
    if ([deviceMachine isEqualToString:@"i386"] || [deviceMachine isEqualToString:@"x86_64"])       {
        return YES;
    }
    return NO;
}

3.Touch ID指紋驗(yàn)證

[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:@"請(qǐng)驗(yàn)證已有指紋" reply:^(BOOL success, NSError * _Nullable error) {
            if (error) {
                NSLog(@"驗(yàn)證失敗"); // 系統(tǒng)會(huì)自動(dòng)給錯(cuò)誤提示
            }else{
                dispatch_async(dispatch_get_main_queue(), ^{
                    // 驗(yàn)證成功,進(jìn)行相關(guān)操作
                });
            }
        }];

PS:如果驗(yàn)證失敗的話,系統(tǒng)會(huì)給出相應(yīng)的提示,如圖


驗(yàn)證失敗

源碼下載

<a >github源碼下載</a>

聯(lián)系我

<a >github</a>

<a >微博</a>

<a href="http://www.itdecent.cn/users/9723687edfb5/latest_articles">簡(jiǎn)書(shū)</a>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容