Apple本地认证(密码+Touch id)
Apple本地认证(密码+Touch id)
转载请注明出处:https://yq.aliyun.com/articles/79904?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有了解了再补充。
参考文献

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
大屏时代的生态变迁,看平板手机的拇指热键与界面布局
引言:曾几何时,无数大大小小的触屏设备仿佛泄闸的洪水一般涌入这个世界。面对突如其来的生态变迁,界面设计师们别无选择,只有在急流当中奋力学习游泳,才能让自己不至于被洪潮所吞没。本文带你了解如何面向平板手机的拇指热键与界面布局,为这种转变提供助力。 本文选自《触类旁通:多终端时代的触屏界面设计》。 人们怎样使用平板手机 iPhone出现之后的几年,手机屏幕的尺寸基本都保持在4英寸以下(以对角线计算),非常便于单手操作。然而,随着大屏手机不断涌入市场,到2014年年中,已经有将近三分之一的移动Web浏览量来自这些设备。大屏手机填补了传统触屏手机与平板电脑之间的空白地带,有些大屏手机的屏幕甚至达到7英寸之巨,因此也获得了一个略显蹩脚的绰号——平板手机。 这类设备虽然有着巨大的身形,但人们仍然会将其作为手机使用。不过,与小屏设备的情况不同,为了在如此巨大的屏幕上舞指自如,用户必须更加频繁地在不同的持机方式之间切换,而且在多数时间里需要双手同时参与。平板手机用户在将近70% 的操作时间里会同时使用两只手,其中一手持机、另一手食指操作的方式最为普遍,约占35%。不过即便如此,对平板手机来说,真正占据...
- 下一篇
移动APP 支付宝快捷支付开发流程
[代码][Java]代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 说说开发的心得吧,之前也没接触过支付宝快捷支付,不扯蛋了进入主题。 开发步骤如下 1 :在商家地址申请快捷支付 https: //b.alipay.com 在我的商家服务 申请快捷支付类,然后填写公司信息等等,提交资料进行审核 ,审核通过后会获取到 商家 PID和Key 2 :如何生成私钥,公钥 在支付宝的demo中有openssl文件夹,在bin目录下可以看到openssl.exe文件 ,打开此文件按照文档上说的,如何生成public_pey,private_key,private_psc8 支付宝生成私钥公钥的文档已经说的很清楚了。按照如...
相关文章
文章评论
共有0条评论来说两句吧...