476
社区成员
发帖
与我相关
我的任务
分享
3、安装、导入示例和源码地址
1、pod 导入【最新版本:version 1.0.1】: pod ‘BATouchID’ 如果发现pod search BATouchID搜索出来的不是最新版本,需要在终端执行 cd 转换文件路径命令退回到 desktop,然后执行pod setup命令更新本地spec缓存(可能需要几分钟),然后再搜索就可以了。 具体步骤:
pod setup : 初始化
pod repo update : 更新仓库
pod search BATouchID
2、文件夹拖入:下载demo,把 BATouchID 文件夹拖入项目即可,
3、导入头文件: #import “BATouchID.h”
4、项目源码地址: OC 版 : https://github.com/BAHome/BATouchID
4、BATouchID 的类结构及 demo 示例
BATouchID.h
#ifndef BATouchID_h
#define BATouchID_h
#import "UIButton+BAKit.h"
/*!
*********************************************************************************
************************************ 更新说明 ************************************
*********************************************************************************
欢迎使用 BAHome 系列开源代码 !
如有更多需求,请前往:https://github.com/BAHome
#ifndef BATouchID_h
#define BATouchID_h
#import "BAKit_TouchID.h"
#import "BAKit_DeviceModel.h"
/*! view 用 BAKit_ShowAlertWithMsg */
#define BAKit_ShowAlertWithMsg(msg) [[[UIAlertView alloc] initWithTitle:@"温馨提示" message:(msg) delegate:nil cancelButtonTitle:@"确 定" otherButtonTitles:nil] show];
/*! VC 用 BAKit_ShowAlertWithMsg */
#define BAKit_ShowAlertWithMsg_ios8(msg) UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"温馨提示" message:msg preferredStyle:UIAlertControllerStyleAlert];\
UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"确 定" style:UIAlertActionStyleDefault handler:nil];\
[alert addAction:sureAction];\
[self presentViewController:alert animated:YES completion:nil];
/*!
*********************************************************************************
************************************ 更新说明 ************************************
*********************************************************************************
项目源码地址:
OC 版 :https://github.com/BAHome/BATouchID
最新更新时间:2017-05-27 【倒叙】 <br>
最新Version:【Version:1.0.1】 <br>
更新内容: <br>
1.0.1.1、新增 单独判断是否支持指纹识别的方法 <br>
1.0.1.2、demo 新增手势密码设置、验证、修改、重置等方法 <br>
1.0.1.3、demo 新增手势密码和指纹识别的逻辑处理,具体使用中可参照demo 中的逻辑处理方式 <br>
最新更新时间:2017-05-24 【倒叙】 <br>
最新Version:【Version:1.0.0】 <br>
更新内容: <br>
1.0.0.1、新增 Touch ID de 详细封装 <br>
1.0.0.2、可以自定义 描述文字、取消按钮、第二个按钮等、详细的错误状态返回 <br>
1.0.0.3、demo 中增加了支付宝指纹登录逻辑,详见 demo
1.0.0.4、新增获取设备详细信息的封装,详见:BAKit_DeviceModel
*/
#endif /* BATouchID_h */
BAKit_TouchID.h
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <LocalAuthentication/LocalAuthentication.h>
// 操作系统版本号
#define IOS_VERSION ([[[UIDevice currentDevice] systemVersion] floatValue])
/**
* TouchID 状态
*/
typedef NS_ENUM(NSUInteger, BAKit_TouchIDType){
/**
* 当前设备不支持TouchID
*/
BAKit_TouchIDTypeNotSupport = 0,
/**
* TouchID 验证成功
*/
BAKit_TouchIDTypeSuccess,
/**
* TouchID 验证失败
*/
BAKit_TouchIDTypeFail,
/**
* TouchID 被用户手动取消
*/
BAKit_TouchIDTypeUserCancel,
/**
* 用户不使用TouchID,选择手动输入密码
*/
BAKit_TouchIDTypeInputPassword,
/**
* TouchID 被系统取消 (如遇到来电,锁屏,按了Home键等)
*/
BAKit_TouchIDTypeSystemCancel,
/**
* TouchID 无法启动,因为用户没有设置密码
*/
BAKit_TouchIDTypePasswordNotSet,
/**
* TouchID 无法启动,因为用户没有设置TouchID
*/
BAKit_TouchIDTypeTouchIDNotSet,
/**
* TouchID 无效
*/
BAKit_TouchIDTypeTouchIDNotAvailable,
/**
* TouchID 被锁定(连续多次验证TouchID失败,系统需要用户手动输入密码)
*/
BAKit_TouchIDTypeTouchIDLockout,
/**
* 当前软件被挂起并取消了授权 (如App进入了后台等)
*/
BAKit_TouchIDTypeAppCancel,
/**
* 当前软件被挂起并取消了授权 (LAContext对象无效)
*/
BAKit_TouchIDTypeInvalidContext,
/**
* 系统版本不支持TouchID (必须高于iOS 8.0才能使用)
*/
BAKit_TouchIDTypeVersionNotSupport
};
/**
指纹解锁 回调
@param touchIDType 返回的类型,BAKit_TouchIDType
@param error error
@param errorMessage errorMessage
*/
typedef void (^BAKit_TouchID_Block)(BAKit_TouchIDType touchIDType, NSError *error, NSString *errorMessage);
/**
判断是否支持指纹解锁 回调
@param isSupport 是否支持
@param context context
@param policy policy
@param error error
*/
typedef void (^BAKit_TouchIDVerifyIsSupport_Block)(BOOL isSupport, LAContext *context, NSInteger policy, NSError *error);
@interface BAKit_TouchID : NSObject
/**
指纹解锁
@param content 提示文本
@param cancelButtonTitle 取消按钮显示内容(此参数只有iOS10以上才能生效),默认(nil):取消
@param otherButtonTitle 密码登录按钮显示内容,默认(nil):输入密码(nil)
@param enabled 默认:NO,输入密码按钮,使用系统解锁;YES:自己操作点击密码登录
@param BAKit_TouchIDTypeBlock 返回状态码和错误,可以自行单独处理
*/
+ (void)ba_touchIDWithContent:(NSString *)content
cancelButtonTitle:(NSString *)cancelButtonTitle
otherButtonTitle:(NSString *)otherButtonTitle
enabled:(BOOL)enabled
BAKit_TouchIDTypeBlock:(BAKit_TouchID_Block)BAKit_TouchIDTypeBlock;
/**
判断是否支持指纹解锁
@param block block
*/
+ (void)ba_touchIDVerifyIsSupportWithBlock:(BAKit_TouchIDVerifyIsSupport_Block)block;
@end
BAKit_DeviceModel.h
#import <Foundation/Foundation.h>
@interface BAKit_DeviceModel : NSObject
/*
获取设备描述
*/
+ (NSString *)ba_deviceGetCurrentDeviceModelDescription;
/*
由获取到的设备描述,来匹配设备型号
*/
+ (NSString *)ba_deviceGetCurrentDeviceModel;
@end
demo 示例
// 示例1:登录验证,是否开启指纹登录
- (void)checkIsSupportTouchID
{
[BAKit_TouchID ba_touchIDVerifyIsSupportWithBlock:^(BOOL isSupport, LAContext *context, NSInteger policy, NSError *error) {
if (isSupport)
{
id isShow = [kUserDefaults objectForKey:kIsOpenTouchID];
if ([isShow intValue] == 0)
{
[kUserDefaults setObject:[NSNumber numberWithBool:YES] forKey:kIsOpenTouchID];
[self presentViewController:[BATouchIDLoginVC new] animated:YES completion:nil];
}
}
else
{
BAKit_ShowAlertWithMsg_ios8(@"设备不支持 touch ID!");
}
}];
}
// 示例2:指纹识别
- (void)test
{
/**
指纹解锁
@param content 提示文本
@param cancelButtonTitle 取消按钮显示内容(此参数只有iOS10以上才能生效),默认(nil):取消
@param otherButtonTitle 密码登录按钮显示内容,默认(nil):输入密码(nil)
@param enabled 默认:NO,输入密码按钮,使用系统解锁;YES:自己操作点击密码登录
@param BAKit_TouchIDTypeBlock 返回状态码和错误,可以自行单独处理
*/
[BAKit_TouchID ba_touchIDWithContent:@"此操作需要认证您的身份" cancelButtonTitle:nil otherButtonTitle:nil enabled:YES BAKit_TouchIDTypeBlock:^(BAKit_TouchIDType touchIDType, NSError *error, NSString *errorMessage) {
if (errorMessage && touchIDType != BAKit_TouchIDTypeTouchIDLockout && touchIDType != BAKit_TouchIDTypeInputPassword)
{
NSString *msg = errorMessage;
BAKit_ShowAlertWithMsg_ios8(msg);
}
if (touchIDType == BAKit_TouchIDTypeSuccess)
{
BAKit_ShowAlertWithMsg(@"指纹验证成功!");
[self ba_backToPreVC:nil];
}
if (touchIDType == BAKit_TouchIDTypeInputPassword)
{
NSLog(@"请跳转到自己的密码登录界面,如:手势解锁等!");
dispatch_async(dispatch_get_main_queue(), ^{
[self ba_verifyPwd];
});
}
}];
}