Biometric authentication uses a person's unique physical traits, like Face ID or Touch ID, to unlock apps or devices securely without typing passwords.
Click to reveal answer
beginner
Which iOS framework is used for biometric authentication?
The LocalAuthentication framework provides tools to check and use Face ID or Touch ID for user authentication.
Click to reveal answer
intermediate
What is the purpose of LAContext in biometric authentication?
LAContext is an object that manages authentication policies and evaluates if biometric authentication can be performed on the device.
Click to reveal answer
intermediate
How do you check if biometric authentication is available on an iOS device?
Use LAContext's canEvaluatePolicy method with LAPolicy.deviceOwnerAuthenticationWithBiometrics to check if Face ID or Touch ID is supported and enrolled.
Click to reveal answer
beginner
What happens if biometric authentication fails or is not available?
You should provide a fallback like device passcode authentication or manual login to keep the app accessible and secure.
Click to reveal answer
Which class in iOS handles biometric authentication requests?
AUIViewController
BUIApplication
CLAContext
DCLLocationManager
✗ Incorrect
LAContext is the class used to manage biometric authentication policies and requests.
What does Face ID use to authenticate a user?
APIN code
BFingerprint scan
CVoice recognition
DFacial recognition
✗ Incorrect
Face ID uses facial recognition technology to authenticate users.
Which method checks if biometric authentication can be used?
AevaluatePolicy
BcanEvaluatePolicy
CauthenticateUser
DcheckBiometrics
✗ Incorrect
canEvaluatePolicy checks if the device supports and has biometric authentication set up.
If biometric authentication is not available, what should an app do?
AAsk for device passcode or password
BIgnore authentication
CCrash immediately
DRestart the device
✗ Incorrect
Apps should provide a fallback like device passcode or password to keep users able to log in.
Which framework must be imported to use Face ID or Touch ID in Swift?
Biometric authentication is designed to verify the user's identity securely using Face ID or Touch ID.
Step 2: Compare options with purpose
Only To securely verify the user's identity without typing a password describes secure identity verification without passwords, which is the main goal.
Final Answer:
To securely verify the user's identity without typing a password -> Option C
The closure receives a success boolean indicating if authentication passed.
Step 2: Check the if condition for success
If success is true, it prints "Authentication succeeded"; otherwise, it prints failure.
Final Answer:
Authentication succeeded -> Option A
Quick Check:
Success true prints "Authentication succeeded" [OK]
Hint: Success true means authentication passed and prints success message [OK]
Common Mistakes:
Confusing success and failure branches
Assuming no output from async closure
Thinking code has syntax errors
4. Identify the error in this Swift code for biometric authentication:
let context = LAContext()
var error: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: error) {
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Login") { success, error in
if success {
print("Access granted")
}
}
}
medium
A. The error parameter should be passed as &error to be mutable
B. evaluatePolicy should be called before canEvaluatePolicy
C. The localizedReason string is missing
D. LAContext must be declared as a class, not a let constant
Solution
Step 1: Check error parameter usage in canEvaluatePolicy
The error parameter must be passed as an inout pointer using &error to capture errors.
Step 2: Verify other code parts
evaluatePolicy is correctly called after canEvaluatePolicy, localizedReason is provided, and LAContext can be a let constant.
Final Answer:
The error parameter should be passed as &error to be mutable -> Option A
Quick Check:
Error param must be &error for canEvaluatePolicy [OK]
Hint: Pass error as &error to canEvaluatePolicy for error capture [OK]
Common Mistakes:
Passing error without & causing no error info
Calling evaluatePolicy before checking availability
Missing localizedReason string
Misunderstanding let vs var for LAContext
5. You want to allow users to authenticate using Face ID or Touch ID, but fallback to device passcode if biometrics fail or are unavailable. Which Swift code snippet correctly implements this behavior?
hard
A. let context = LAContext()
var error: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Authenticate") { success, error in
if success {
print("Biometric success")
} else {
print("Authentication failed")
}
}
} else {
print("Biometrics not available")
}
B. let context = LAContext()
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Authenticate") { success, error in
if success {
print("Authentication success")
} else {
print("Authentication failed")
}
}
C. let context = LAContext()
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil) {
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Authenticate") { success, error in
if success {
print("Biometric success")
} else {
context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "Fallback") { success, error in
if success {
print("Passcode success")
} else {
print("Authentication failed")
}
}
}
}
}
D. let context = LAContext()
var error: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) {
context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "Authenticate") { success, error in
if success {
print("Authentication success")
} else {
print("Authentication failed")
}
}
}
Solution
Step 1: Understand fallback requirement
The app should try biometrics first, then fallback to device passcode if biometrics fail or are unavailable.
Step 2: Analyze code options for fallback logic
let context = LAContext()
var error: NSError?
if context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) {
context.evaluatePolicy(.deviceOwnerAuthentication, localizedReason: "Authenticate") { success, error in
if success {
print("Authentication success")
} else {
print("Authentication failed")
}
}
} uses .deviceOwnerAuthentication policy which automatically prefers biometrics (Face ID/Touch ID) and falls back to passcode if unavailable or fails. It also properly checks availability first per Apple's guidelines.