Apple本地认证(密码+Touch id)

Apple本地认证(密码+Touch id)

转载请注明出处:?spm=5176.blogshare79904.0.0.kLFs48

前言

本片博客主要介绍如何在自己的APP中添加指纹解锁/密码解锁技术。主要是对苹果的LocalAuthentication的介绍。看过之后你将会知道如何使用苹果的指纹解锁和本地密码验证功能。

正文

Apple有好多Frameworks,包括常用的UIKit、Foundation和Accounts等等。其中还有一个Framework:LocalAuthentication。该Framework名如其功能,提供额本地认证的功能:也就是我们平时说的密码验证和指纹解锁功能。该Framework的内容如下:

它包含了三个类

LAContext.h
LAError.h
LAPublicDefines.h
LocalAuthentication.h(包含文件,即里面包含了该Framework里面的其他类头文件)

LAPublicDefines.h该类是本地验证的定义类,里面定义了五类String:Pocicies/Options/Credential types/Error codes/Error domain。
Policies:

LAPolicyDeviceOwnerAuthenticationWithBiometrics:使用Touch id来验证设备所有者
LAPolicyDeviceOwnerAuthentication:使用Touch id或者设备密码来验证用户

Options:

kLAOptionUserFallback
kLAOptionAuthenticationReason

​Credential types:

kLACredentialTypePasscode
kLACredentialTypePassphrase
kLACredentialCTKPIN

​Error codes:

kLAErrorAuthenticationFailed:认证失败
kLAErrorUserCancel:用户取消
kLAErrorUserFallback
kLAErrorSystemCancel:系统取消
kLAErrorPasscodeNotSet:没有设置密码
kLAErrorTouchIDNotAvailable: Touch id不可用
kLAErrorTouchIDNotEnrolled
kLAErrorTouchIDLockout
kLAErrorAppCancel: app 取消
kLAErrorInvalidContext

​Error domain:

kLAErrorDomain:

LAContext.h该类中有个LAPolicy的枚举:LAPolicyDeviceOwnerAuthenticationWithBiometrics(使用 touch id 认证)和LAPolicyDeviceOwnerAuthentication(使用密码或者设备密码进行验证设备所有者)。

需要注意,对于LAPolicyDeviceOwnerAuthenticationWithBiometrics,Touch ID认证的时候我们的设备必须有Touch ID设置,如果没有或者该设备本身不支持Touch ID,前者认证就会失败,如果Touch ID被锁定,则需要输入密码来解锁Touch ID。另外,Touch ID如果输入错误5次将会被锁定,此时用户必须使用输入密码的方式来结果它。如果密码输入也错误的话,你在设置--->Touch ID里面就会看到:


并且只有经过一段时间之后才能使用。
对于后者的LAPolicyDeviceOwnerAuthentication,它的意思是Touch ID或者密码来解锁。意思就是如果Touch ID可用,并且没有锁定,用户第一次会要求使用指纹解锁,否则就会使用密码解锁。这里和另一个枚举不一样的是:
对于LAPolicyDeviceOwnerAuthenticationWithBiometrics:


对于LAPolicyDeviceOwnerAuthentication:
除了前面的两个提示外,还有

直接上代码,看看如何实现指纹解锁或者指纹+密码解锁:

- (IBAction)authAction:(id)sender {
    LAContext *myContext = [[LAContext alloc] init];
    NSError *myError = nil;
    if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:&myError]) {
        [myContext evaluatePolicy:LAPolicyDeviceOwnerAuthentication localizedReason:@"通过Home键验证已有手机指纹" reply:^(BOOL success, NSError * _Nullable error) {
            if (success) {
                NSLog(@"认证成功");
            }else {
                NSLog(@"认证失败,%@",[error description]);
            }
        }];
    }else {
        NSLog(@"error %@",[myError description]);
    }
}

首先是实例化一个LAContext的上下文,然后首先有个方法:

- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError  __autoreleasing )error __attribute__((swift_error(none)));

验证一下我们制定的LAPolicy是否可以使用,error用来记录不可使用的原因。
接下来就是:

- (void)evaluatePolicy:(LAPolicy)policy
       localizedReason:(NSString *)localizedReason
                 reply:(void(^)(BOOL success, NSError * __nullable error))reply;

其中的policy就是我们刚才验证的policy,然后localizedReason是我们使用验证的原因,也就是上面途中显示的“通过Home键验证已有手机指纹”。最后通过block回调判断结果,succes查看是否成功,error查看如果失败的话,失败的原因。
到这里,你已经知道了如何使用指纹解锁,为你的app添加指纹解锁功能。

后续LAContext里面其他的method或者property有了解了再补充。

参考文献
时间: 2024-11-03 05:16:13

Apple本地认证(密码+Touch id)的相关文章

ios 8开放指纹认证(Touch ID)操作使用

   iOS 8的SDK开放了Touch ID的接口.从WWDC的视频中可以看到Touch ID应用在两个方面:用于Key Chain加密和用于授权.iOS 8正式版发布以后我们可以看到Evernote的iOS app已经集成了该功能.下面来看看如何实现使用Touch ID进行身份认证.   其实很简单,用于身份认证的所有的接口都在LocalAuthentication framework中, 该framework实际上只有三个头文件:   LAContext.h   LAError.h   L

Swift实现Touch ID验证

iOS8开放了很多API,包括HomeKit.HealthKit什么的.我们这里要说的是其中之一的Touch ID验证. 以前用app保护用户的隐私内容,只能设定和输入密码.眼看着只能是iPhone本身用Touch ID方便酷炫的解锁而自己的app不能.实在让人捉急.现在咱也可以酷炫一把了.当用户打开使用了Touch ID认证的app查看什么内容的时候就只能是把手指放在Home键上去验证身份.在app中验证的指纹就是用户在手机里的指纹.是的,你的app无需用户再输入一次验证用的指纹了.所以使用起

苹果新款Mac笔记本疑似加入Touch ID指纹传感器

台湾网站Apple.club.tw爆料称,苹果可能将在新款Mac笔记本和台式机中集成Touch ID指纹传感器. 该网站报道称,苹果可能会在12英寸MacBook Air和下一代MacBook Pro的触摸板中集成Touch ID指纹扫描仪.而对于类似iMac.Mac Pro和Mac Mini的台式机,苹果有可能将Touch ID集成在Magic Mouse鼠标或Magic Trackpad触摸板中. 此外,12英寸MacBook Air将提供更多的配色,包括与新款iPhone一致的银色.太空灰

Touch ID十大谣言

9月23日消息,加拿大<多伦多星报>在iPhone 5s开售后发表文章列举了iPhone 5s指纹识别的十大缺点,这篇文章迅速在业内引发热议.科技网站TAUW的撰稿人克里斯·劳森(Chris Rawson)认为<多伦多星报>对iPhone 5s指纹识别的解读纯属胡扯",他尖锐指出该文章像是出自一位从来没有用过iPhone的人,与此同时还对文中所描述的iPhone 5s指纹识别的十大缺点进行了逐条反驳. 劳森表示,每当苹果推出的新产品中包含新技术或尚未流行的技术时,媒体界就

Touch ID指纹识别不灵敏该肿么办?

不管是iPhone5S还是iPhone6/6 Plus,相信各位在使用过程中都碰到过Touch ID指纹识别系统不灵敏的情况,那Touch ID为什么会变得不灵敏呢?又该怎么解决这个问题呢?     iPhone Touch ID不灵原因: 一般来说,如果你的Touch ID突然不灵敏了,那么原因主要是以下几点. 1.手指或手机潮湿.环境温度过低 Touch ID传感器是通过手指的静电和热量来实现识别,所以,如果你的手指或是Home键沾上水渍或者过于潮湿,也会导致识别失败,这时就要确保手指和手机

6款利用Touch ID保护敏感信息的应用程序

苹果的TouchID指纹识别技术让用户可以更加方便地解锁设备,同时也带来了更高的安全性.而现在,已经有一些第三方应用程序开始利用到这项技术, 它们当中最优秀的一些包括:Dropbox在最近的一次升级之后,Dropbox可让用户通过指纹来解锁自己的账户.考虑到有数百位用户的密码前不久才被暴露,利用Touch ID来亡羊补牢应该不算太晚,亚马逊在亚马逊上进行购物必须输入密码,而如果你在亚马逊的 iOS设备当中开启了Touch ID功能,那便可以通过指纹扫描来省去这个步骤了.但对于那些经常进行冲动消费

iphone手机Touch ID指纹识别的小技巧

苹果在iPhone5S上推出的指纹识别系统--Touch ID现在已经成为了iOS设备不可或缺的重要部分.解锁.密码.支付,方方面面少了它都不行.不过有的时候你会发现,使用起来Touch ID会卡卡的,慢慢的,这该怎么办呢?今天小编就向大家介绍两个关于Touch ID的小技巧,或者说小花招也可以.     只存一个指纹 我们知道,iOS设备的Touch ID允许人们存储五个指纹.那么我们可以利用这一点,让五个备选栏中都存入自己最常使用的那根手指的指纹,这样就能够有效提高 Touch ID 对于指

微信将推指纹支付 &quot;指付通&quot;会与Touch ID整合吗

有消息称微信下一版本将推指纹支付"指付通",解决手机丢失资金安全的问题(这个应该是针对阿里手机支付的弱点),到时候用户绑定的银行卡进行付款时,不用输入密码只需在专门的支付设备(苹果Touch ID ?)上按下指印就可以完成支付交易.2105.05.30消息Mate7率先微信指纹支付 比Touch ID整合微信早一点 指纹支付最早想要涉及应该算是苹果吧,苹果在去年的手机发布会上同时推出了苹果Touch ID,Touch ID是iPhone 5S配备的指纹识别系统,苹果对A7处理器进行指纹

Mate7微信指纹支付来了 比Touch ID整合微信早一点

之前我们聊过微信将推指纹支付 "指付通"会与Touch ID整合吗这个话题,现在有国内厂商率先支持微信指纹支付,体验一下美国用户使用Apple Pay搭配Touch ID来实现便捷支付的感受.大赞国内手机厂家的创新能力!! 首先你先得有一部新手机,华为Mate7,用户需要将微信更新到6.2版本,然后按照"设置-隐私和安全-指纹-录入"的步骤录入指纹即可.具体操作请看下面微信指纹支付图文教程.微信支付成功时(微信红包和零钱充值除外),都会自动提示开通指纹支付功能: T