支付宝指纹解锁和手势解锁 封装 – BATouchID

weixin_38078058 2019-09-12 01:48:18
BATouchID 1、功能及简介 1、支付宝 指纹登录 touchID 封装 2、可以自定义 描述文字、取消按钮、第二个按钮等、详细的错误状态返回 3、demo 中增加了支付宝指纹登录逻辑,详见 demo 4、进入后台 10秒 后再次打开APP 会自动判断指纹登录,详见 demo 5、本地存储开启指纹登录开关,会自动判断指纹登录,详见 demo 6、本地密码登录后自动判断是否支持指纹登录,会自动判断指纹登录,详见 demo 7、新增 单独判断是否支持指纹识别的方法 8、demo 新增手势密码设置、验证、修改、重置等方法 9、demo 新增手势密码和指纹识别的逻辑处理,具体使用中可参照demo 中的逻辑处理方式 2、图片示例 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]; }); } }]; }
...全文
1422 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 Node.js作为一个运行环境,其基础是Chrome的V8引擎,它最突出的优势在于能够支持JavaScript代码在服务器端执行,从而为网络应用程序创造了一个全新的执行平台。在Node.js生态中,文件系统的相关操作由fs模块承担,而fs.readFile作为其中的关键方法,专门用于实现文件内容的获取。本文旨在全面阐释fs.readFile方法的相关信息,包括其功能说明、语法结构、参数配置、应用范例以及源代码实现,以供那些需要在Node.js环境中进行文件操作的程序员参考。 fs.readFile方法具备异步特性,意味着它在执行文件读取任务时不会中断当前程序的运行流程,使得程序的其他部分能够同步执行。该方法的工作流程是:一旦调用,Node.js会立即反馈执行信号,然后在后台线程中执行文件读取任务。当文件读取任务完成后,Node.js会通过一个预设的回调函数来处理读取结果或识别错误。 fs.readFile方法的语法结构如下: fs.readFile(path[, options], callback) - path:一个必须的参数,其数据类型可以是字符串、Buffer或Uint8Array,用于指示文件的具体位置或文件描述符。 - options:一个可选参数,形式为一个对象,用于设定文件的编码格式及打开模式。该对象中可以包含encoding(字符编码,默认值为null,此时返回Buffer对象)和flag(文件打开模式,默认值为r,代表只读模式)。 - callback:一个必须的回调函数,在文件读取任务结束后被触发。若读取过程中出现错误,err参数将包含错误详情,否则为n...

479

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧