iOS--TouchID和FaceID調(diào)用(附demo)

自從公司的PM買了iPhone X后,于是就走上了適配這條不歸路。原先項(xiàng)目里有接入TouchID,一切都是那么的完美。直到某天PM拿著手機(jī)給我看了張圖.
FaceID權(quán)限
PM說iPhoneX是高端用戶,就不要讓他們看到TouchID字眼。嗯好的,你都是對(duì)的。然后我把這個(gè)功能模塊封裝了一下,后面會(huì)提供demo。

開啟權(quán)限

在info.plist文件里設(shè)置NSFaceIDUsageDescription就ok。這個(gè)可以理解為開啟FaceID權(quán)限,就相當(dāng)于調(diào)定位、相冊(cè)那些權(quán)限一樣。

引入框架

#import <LocalAuthentication/LocalAuthentication.h>

驗(yàn)證方式

  • LAPolicyDeviceOwnerAuthenticationWithBiometrics(只有指紋/FaceID驗(yàn)證功能)
  • LAPolicyDeviceOwnerAuthentication(包含指紋/FaceID驗(yàn)證和密碼驗(yàn)證)

調(diào)用前判斷

    NSString *message = IS_IPHONE_X ? @"面容 ID 短時(shí)間內(nèi)失敗多次,需要驗(yàn)證手機(jī)密碼" : @"請(qǐng)把你的手指放到Home鍵上";// 當(dāng)deviceType為L(zhǎng)APolicyDeviceOwnerAuthentication的時(shí)候,iPhone X會(huì)需要前面這段描述
NSInteger deviceType = LAPolicyDeviceOwnerAuthenticationWithBiometrics;//單純指紋或FaceID,LAPolicyDeviceOwnerAuthentication會(huì)有密碼驗(yàn)證
    LAContext *laContext = [[LAContext alloc] init];
    laContext.localizedFallbackTitle = @""; // 隱藏左邊的按鈕(默認(rèn)是忘記密碼的按鈕)
    NSError *error = nil;
    BOOL isSupport = [laContext canEvaluatePolicy:(deviceType) error:&error];

調(diào)用FaceID或者TouchID(方法是同一個(gè),系統(tǒng)會(huì)自己判斷)

if (isSupport) {
        [laContext evaluatePolicy:(deviceType) localizedReason:message reply:^(BOOL s, NSError * _Nullable error) {
            if (s) {
                success();
            }else {
                failure(error, LAContextErrorAuthorFailure);
            }
        }];
    }else {
        failure(error, LAContextErrorAuthorNotAccess);
    }
  • localizedReason:這個(gè)參數(shù)不可為空,否則會(huì)crash

回調(diào)失敗的處理(只記錄了幾個(gè)我在項(xiàng)目中測(cè)試出來的)

error.code == -8 :出TouchID嘗試次數(shù)或FaceID嘗試次數(shù),已被鎖
error.code == -7 :未開啟TouchID權(quán)限(沒有可用的指紋)
error.code == -6 :iPhoneX設(shè)置里面沒有開啟FaceID權(quán)限/非iPhoneX手機(jī)且該手機(jī)不支持TouchID(如iPhone5、iPhone4s)

大體上就是這些,這里是demo。如果有表述錯(cuò)誤的,歡迎指正??

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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