Require Face ID to open the app and to send
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
import Foundation
|
||||
import LocalAuthentication
|
||||
|
||||
/// Face ID / Touch ID gating for the app lock and for sensitive actions.
|
||||
enum Biometrics {
|
||||
static var isAvailable: Bool {
|
||||
LAContext().canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil)
|
||||
}
|
||||
|
||||
static var label: String {
|
||||
let context = LAContext()
|
||||
_ = context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil)
|
||||
return context.biometryType == .faceID ? "Face ID" : "Touch ID"
|
||||
}
|
||||
|
||||
/// Biometrics with the system passcode fallback (the alert offers "Use
|
||||
/// Passcode" after a failed face scan).
|
||||
static func authenticate(reason: String) async -> Bool {
|
||||
guard isAvailable else { return false }
|
||||
let context = LAContext()
|
||||
context.localizedCancelTitle = "Cancel"
|
||||
return (try? await context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics,
|
||||
localizedReason: reason)) ?? false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user