페이스아이디 권한을 처음 허용하고 설정에서 앱 권한에 페이스아이디 권한을 비활성화한다면? 그러면 아이폰 비밀번호를 입력하는데… 앱에서 다시 생체인증을 비활성화했다가 다시 활성화를 해도 계속 비밀번호만 입력한다!
이유는 아직 앱 권한에 페이스아이디가 활성화 되지 않았기 때문.
그렇다면 사용자가 활성화 하기 전까지는 계속 생체인증을 비활성화시켰다가 활성화시켜도 비밀번호를 입력하게 됨!
이 문제를 해결하기 위해 앱 내 권한에 페이스아이디가 비활성화되어있으면 생체인증을 활성화할 때 알림 창을 띄워 권한을 받으라는 안내를 사용자에게 전달한다!
LocalAuthentication 프레임워크의 오류중에 biometryNotAvailable이 오류코드가 있는데 만약 이 에러메세지가 발생하면 알림을 주고 설정으로 이동하라 라는 기능을 구현했다.
private func checkBiometryAvailability() {
biometricsAuth.authenticateWithBiometrics { [weak self] success, error in
guard let self = self else { return }
if success {
print("인증 성공")
} else {
print("인증 실패")
if let error = error as? LAError, error.code == .biometryNotAvailable {
self.showPermissionDeniedAlert()
} else {
print("페이스 아이디 권한이 비활성화되어 있습니다. 설정으로 이동하여 활성화해주세요.")
self.showPermissionDeniedAlert()
}
}
}
}
private func showPermissionDeniedAlert() {
let authorizationAlert = UIAlertController(title: "Face ID 권한 거부", message: "Face ID 권한을 사용하려면 설정에서 Face ID 권한을 허용해주세요", preferredStyle: .alert)
let settingsAction = UIAlertAction(title: "설정으로 이동", style: .default) { (_) -> Void in
guard let settingsUrl = URL(string: UIApplication.openSettingsURLString) else {
return
}
if UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)
}
}
let cancelAction = UIAlertAction(title: "취소", style: .default, handler: nil)
authorizationAlert.addAction(settingsAction)
authorizationAlert.addAction(cancelAction)
DispatchQueue.main.async { [weak self] in
self?.present(authorizationAlert, animated: true, completion: nil)
}
}
페이스아이디 설정으로 가는 게
UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)
이걸 쓰면 이동을 한다!
반응형
'iOS' 카테고리의 다른 글
[240628] REST API가 뭘까용 (0) | 2024.06.28 |
---|---|
[240606] Alamofire 써보기 (0) | 2024.06.06 |
[240320] 익명사용자에서 애플계정으로 변경시 오류 수정 (0) | 2024.03.21 |
[240319] 페이지네이션의 필드값 조건 수정 (0) | 2024.03.20 |
[240318] loadDiaries의 문제.. (0) | 2024.03.18 |