|
//
// IPUAuthenticationPlugin.m
// IPUMobileFunc
//
// Created by 秋林 on 2019/1/18.
// Copyright © 2019 Asiainfo. All rights reserved.
//
#import "IPUAuthenticationPlugin.h"
#import <LocalAuthentication/LocalAuthentication.h>
#import <IPUMobileUI/IPUMobileUI.h>
@implementation IPUAuthenticationPlugin
#pragma mark - 指纹锁
/**
是否支持指纹解锁
*/
- (void)isSupportFingerprintAuthentication:(NSArray *)params {
LAContext *context = [[LAContext alloc] init];
NSError *error = nil;
// 设备是否支持TouchId
if (![context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error] || error) {
[self callback:@"1"];//不支持指纹解锁
} else {
[self callback:@"0"];//支持指纹解锁
}
}
/**
指纹解锁
*/
- (void)fingerprintAuthentication:(NSArray *)params {
LAContext *context = [[LAContext alloc] init];
NSError *error = nil;
// 设备是否支持TouchId
if (![context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error] || error) {
[self callback:@"2"];//不支持指纹解锁
return;
}
NSString *localizedFallbackTitle = @"输入密码解锁";
NSString *localizedReason = @"需要验证您的touch ID";
if (params.count > 0) {
localizedFallbackTitle = params[0];
}
if (params.count > 1) {
localizedReason = params[1];
}
context.localizedFallbackTitle = localizedFallbackTitle;
// 弹窗验证
__weak typeof(self) weakSelf = self;
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:localizedReason
reply:^(BOOL success, NSError * _Nullable error) {
dispatch_async(dispatch_get_main_queue(), ^{
__strong typeof(self) strongSelf = weakSelf;
if (success) {
[strongSelf callback:@"0"];//指纹解锁验证成功
return;
}
LAError errorCode = error.code;
if (errorCode == LAErrorSystemCancel || errorCode == LAErrorUserCancel) {
// 系统取消授权、用户取消授权
[strongSelf callback:@"1"];
return;
}
[strongSelf callback:@"2"];
});
}];
}
#pragma mark - 手势锁
/**
设置手势锁颜色:常规颜色、选中颜色、错误颜色
*/
-(void)styleGestureLock:(NSArray *)params{
if (params && params.count>0) {
NSString *bgColor = nil;
if (params[0]==[NSNull null]) {
bgColor = nil;
}else{
bgColor = params[0];
}
NSArray *lockColors = nil;
if (params.count>1) {
if (params[1]==[NSNull null]) {
lockColors = nil;
}else{
lockColors = params[1];
}
}
NSArray *textColors = nil;
if (params.count>2) {
if (params[2]==[NSNull null]) {
textColors = nil;
}else{
textColors = params[2];
}
}
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
if (bgColor) {
[defaults setObject:[NSString stringWithFormat:@"%@",bgColor] forKey:BgColorKey];
}else{
[defaults setObject:nil forKey:BgColorKey];
}
if (lockColors && lockColors.count==3) {
[defaults setObject:[NSString stringWithFormat:@"%@",lockColors[0]] forKey:LockNormalColorKey];
[defaults setObject:[NSString stringWithFormat:@"%@",lockColors[1]] forKey:LockSelectedColorKey];
[defaults setObject:[NSString stringWithFormat:@"%@",lockColors[2]] forKey:LockErrorColorKey];
}else{
[defaults setObject:nil forKey:LockNormalColorKey];
[defaults setObject:nil forKey:LockSelectedColorKey];
[defaults setObject:nil forKey:LockErrorColorKey];
}
if (textColors && textColors.count==3) {
[defaults setObject:[NSString stringWithFormat:@"%@",textColors[0]] forKey:TextNormalColorKey];
[defaults setObject:[NSString stringWithFormat:@"%@",textColors[1]] forKey:TextErrorColorKey];
[defaults setObject:[NSString stringWithFormat:@"%@",textColors[2]] forKey:TextHighlightColorKey];
}else{
[defaults setObject:nil forKey:TextNormalColorKey];
[defaults setObject:nil forKey:TextErrorColorKey];
[defaults setObject:nil forKey:TextHighlightColorKey];
}
[defaults synchronize];
}
}
/**
设置手势锁
*/
- (void)setGestureLock:(NSArray *)params{
[CoreLockViewController showSettingLockVCInVC:[self getViewController] successBlock:^(CoreLockViewController *lockVC, NSString *pwd) {
[self callback:@"1"];
[lockVC dismiss:.5f];
}];
}
/**
手势解锁
*/
- (void)validateGestureLock:(NSArray *)params{
BOOL hasPwd = [self hasGesturePassword];
if(!hasPwd){
[self callback:@"你还没有设置密码,请先设置密码"];
}else {
NSString *imgUrl = nil;
NSString *userTip = nil;
if (params && params.count>0) {
if (params[0]==[NSNull null]) {
userTip = nil;
}else{
userTip = params[0];
}
if (params.count>1) {
if (params[1]==[NSNull null]) {
imgUrl = nil;
}else{
imgUrl = params[1];
}
}
}
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
if (imgUrl) {
[defaults setObject:[NSString stringWithFormat:@"%@",imgUrl] forKey:LoginUserImgUrlKey];
}else{
[defaults setObject:nil forKey:LoginUserImgUrlKey];
}
if (userTip) {
[defaults setObject:[NSString stringWithFormat:@"%@",userTip] forKey:LoginUserNameKey];
}else{
[defaults setObject:nil forKey:LoginUserNameKey];
}
[defaults synchronize];
[CoreLockViewController showVerifyLockVCInVC:[self getViewController] Plugin:self successBlock:^(CoreLockViewController *lockVC, NSString *pwd) {
[self callback:@"1"];
[lockVC dismiss:.5f];
} failedBlock:^{
[self callback:@"0"];
} forgetPwdBlock:^(CoreLockViewController *lockVC){
[self callback:@"-1"];
[lockVC dismiss:.5f];
}];
}
}
/**
修改手势密码
*/
- (void)updateGestureLock:(NSArray *)params{
[CoreLockViewController showModifyLockVCInVC:[self getViewController] successBlock:^(CoreLockViewController *lockVC, NSString *pwd) {
[self callback:@"1"];
[lockVC dismiss:.5f];
}];
}
/**
删除手势密码
*/
- (void)delGestureLock:(NSArray *)params{
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:nil forKey:CoreLockPWDKey];
[defaults synchronize];
[self callback:@"1"];
}
/*
判断是否设置原生手势锁
*/
-(void)isSetGestureLock:(NSArray *)params{
BOOL isGesture = [self hasGesturePassword];
if (isGesture) {
[self callback:@"1"];
}else{
[self callback:@"0"];
}
}
#pragma mark - other method
/*
判断是否设置过手势密码
*/
-(BOOL)hasGesturePassword{
NSString * str = [self fetchCoreLockPassword];
if (![IPUCommonTool isNullWithString:str]) {
return YES;
}
return NO;
}
/*
保存手势密码
*/
-(void)setCoreLockPassword:(NSString *)str{
//获取preference
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
//保存
[defaults setObject:str forKey:CoreLockPWDKey];
//立即同步
[defaults synchronize];
}
/*
获取保存在本地的手势密码
*/
-(NSString *)fetchCoreLockPassword{
//获取preference
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
//读取
NSString * str = (NSString *)[defaults objectForKey:CoreLockPWDKey];
return str;
}
@end
|