TSQBiometricAuth
描述
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,所以
代理
实例化
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文件。