钥匙串
开发中,为了安全,不允许本地明文存储本地密码!
但是,有需要登录的时候显示怎么办?
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
指纹识别
导入库 #import <LocalAuthentication/LocalAuthentication.h>
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 --- 比如电话进来,用户不可控的
注意:指纹识别不可以代替登录的逻辑, 账号密码登录,可以说明用户是账号的主人;指纹识别说明用户是手机的主人!
网友评论