访问钥匙串及指纹解锁

钥匙串

开发中,为了安全,不允许本地明文存储本地密码!

但是,有需要登录的时候显示怎么办?

iOS 7.0.3之后 苹果对开发者开放钥匙串使用权限 ! 但是内部是C语言  我们可以借助三方框架完成  --- SSkeychain

/** 保存密码

 *  参数

 *  1. 密码明文

 *  2. 服务,可以随便写,但是他是APP的一个标识,建议用BundleID

 *  3. 账号,用户名

 */

+ (BOOL)setPassword:(NSString*)password forService:(NSString*)serviceName account:(NSString*)account;

/** 获取密码 */

+ (NSString*)passwordForService:(NSString*)serviceName account:(NSString*)account;

/** 找出所有的账号 */

+ (NSArray*)allAccounts;

可以把密码信息存储到钥匙串中,这样即使不小心误删app,再下载下来,也会记住登录账号密码.

注意:使用钥匙串的话,需要在工程中打开 KeyChain Groups


访问钥匙串及指纹解锁_第1张图片



指纹识别

导入库 #import  

LAContext * context = [[LAContextalloc]init];

 //判断设备是否支持指纹识别

 if([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricserror:NULL]) {

 //输入指纹

[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricslocalizedReason:@"指纹识别"reply:^(BOOLsuccess, NSError * _Nullableerror) {

 NSLog(@"%d %@",success,error);

        }];

    }else{

 NSLog(@"不支持");

    }

指纹识别的错误信息

 LAErrorAuthenticationFailed      --- 指纹无法识别

 LAErrorUserCancel                        --- 用户点击了"取消"

 LAErrorUserFallback                      --- 用户点击了"输入密码"

 LAErrorSystemCancel                    --- 系统取消,比如激活了其他应用(用户)

 LAErrorPasscodeNotSet                --- 因为设备上没有设置密码

 LAErrorTouchIDNotAvailable         --- 设备没有Touch ID

 LAErrorTouchIDNotEnrolled          --- 因为用户没有输入指纹

 LAErrorTouchIDLockout                 --- 多次输入错误,密码锁定

 LAErrorAppCancel                          --- 比如电话进来,用户不可控的

注意:指纹识别不可以代替登录的逻辑, 账号密码登录,可以说明用户是账号的主人;指纹识别说明用户是手机的主人!

你可能感兴趣的:(访问钥匙串及指纹解锁)