TSQBiometricAuth 2.0.12

TSQBiometricAuth 2.0.12

Kevin Cardoso de Saflvielitz 维护。



  • Kévin Cardoso de Sá

TSQBiometricAuth

Version License Platform

open-cancel open-error-success

描述

TSBiometricAuth 是一个使生物识别认证变得简单的库。它嵌入 Apple 公司的 LocalAuthentication 框架,并通过 Delegate 通知认证结果。

要求

iOS 9.0

Swift 4.1

RxSwift 4.2

安装

TSQBiometricAuth 可通过 CocoaPods 获取。要安装它,只需将以下行添加到 Podfile 中

pod 'TSQBiometricAuth'

示例

要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install。打开 ExampleViewController 以查看实现生物识别认证所需的全代码。

使用

  • 将库导入到您的项目中

    import TSQBiometricAuth

  • 创建一个 TSQBioAuthViewController 实例,例如:

    let vc = TSQBioAuth.instantiateTSQBioAuthViewController(...)

  • 自定义并进行设置,以监听认证状态变化。

自定义

通过初始化参数定制 UI 和 TSQBioAuthViewController 的行为,以下是其列表

参数名 类型 描述
displayMessage String 在请求用户的TouchID/faceID时向用户显示的消息。
leftButtonConfiguration TSQButtonConfiguration 定义左按钮配置。
rightButtonConfiguration TSQButtonConfiguration 定义右按钮配置。
dismissWhenAuthenticationSucceeds Bool 定义是否在认证成功时自动关闭 TSQBioAuthViewController。
默认: true
dismissWhenUserCancels Bool 定义当用户选择取消认证过程(通过单击左按钮)时,TSQBioAuthViewController 是否应自动关闭。
默认: true
logoImage UIImage 显示在屏幕中央的图片。
logoImageConfiguration TSQImageConfiguration 定义 logoImage 配置。
backgroundImage UIImage ViewController 的背景图片。
默认: nil
backgroundImageConfiguration TSQImageConfiguration 定义 backgroundImage 配置。
默认: nil
backgroundColor UIColor ViewController 的背景颜色。
默认: nil

TSQButtonConfiguration

配置 UIButton 的简单包装。

参数名 类型 默认值
cornerRadius CGFloat 5
borderColor UIColor 白色
borderWidth CGFloat 1
backgroundColor UIColor 白色
高度 CGFloat 40
文本 String ""
文本颜色 UIColor 黑色
字体 UIFont 系统字体(14.0)

TSQImageConfiguration

配置 UIImage 的简单包装。

参数名 类型 默认值
高度 CGFloat 80
宽度 CGFloat 80
水平偏移 CGFloat 0
垂直偏移 CGFloat 0
内容模式 UIViewContentMode .scaleToFill

监听认证状态变化

这可以通过代理或Rx订阅来实现。

警告 由于苹果的 LAErrors 分类,当用户选择取消认证时,将返回具有代码LAError.Code.userCancel的错误。但是,由于具备生物认证功能的应用程序在发生这种情况时不会自行关闭负责认证流程的View Controller,所以在发生这种情况时不会自行消失。如果您选择自行处理错误,请留意这个特定场景。

代理

实例化之后,设置其代理,并确保当前ViewController遵循TSQBioAuthenticationDelegate协议。如下所示

class CurrentViewController: UIViewController {
    ...
    private func setupBiometricAuthentication() {
        let bioAuthVC = TSQBioAuth.instantiateTSQBioAuthViewController(...)
        bioAuthVC.delegate = self
        ...
    }
}

extension CurrentViewController: TSQBioAuthenticationDelegate {
    func authenticationFailed(withErrorCode errorCode: Int) {
        switch errorCode {
        case LAError.Code.userCancel.rawValue:
            print("User cancelled")
        default:
            print("Authentication Failed with error: \(errorCode)")
        }
    }
    
    func authenticationSucceeded() {
        print("Authentication Succeeded")
    }
    
    func authenticationDisabledByUserChoice() {
        print("Authentication Disabled by User Choice")
    }
}

Rx 订阅

实例化之后,订阅认证状态并响应状态的变化

class CurrentViewController: UIViewController {
    ...
    private let disposeBag = DisposeBag()
    private func setupBiometricAuthentication() {
        let bioAuthVC = TSQBioAuth.instantiateTSQBioAuthViewController(...)
        bioAuthVC.authenticationState.subscribe(onNext: { (state) in
            switch state {
            case .success:
                print("Authentication Succeeded")
            case .error(code: let errorCode):
                switch errorCode {
                case LAError.Code.userCancel.rawValue:
                    print("User cancelled")
                default:
                    print("Authentication Failed with error: \(errorCode)")
                }
            case .disabledByUserChoice:
                print("Authentication Disabled by User Choice")
            }
        }).disposed(by: self.disposeBag)
        ...
    }
}

错误处理

由于已处理认证中涉及的所有错误,因此没有必须实现authenticationFailed(withErrorCode errorCode: Int)(代理)或包含case .error(code: let errorCode):(Rx 订阅)的义务。

如果希望自行处理错误,请参阅LAErrors

作者

Kévin Cardoso de Sá, [email protected]

许可证

TSQBiometricAuth在MIT许可下可用。有关更多信息,请参阅LICENSE文件。