홈>
실제로 로컬 인증이 포함 된 앱을 만들고 있습니다.
지금까지 내 코드 :
func authenticateUser() {
let authenticationContext = LAContext()
var error: NSError?
let reasonString = "Touch the Touch ID sensor to unlock."
// Check if the device can evaluate the policy.
if authenticationContext.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &error) {
authenticationContext.evaluatePolicy( .deviceOwnerAuthenticationWithBiometrics, localizedReason: reasonString, reply: { (success, evalPolicyError) in
if success {
print("success")
} else {
if let evaluateError = error as NSError? {
// enter password using system UI
}
}
})
} else {
print("toch id not available")
// enter password using system UI
}
}
문제는 앱에 터치 ID가 없거나 지문이 잘못되었을 때 암호 잠금 장면을 사용하고 싶다는 것입니다.
이미지처럼 :
어떻게해야합니까?
- 답변 # 1
- 답변 # 2
.deviceOwnerAuthentication
를 사용해야합니다.deviceOwnerAuthenticationWithBiometrics
대신 정책을 평가합니다. 이 매개 변수를 사용하면 시스템은 생체 인증을 사용할 수있는 경우 암호 인증 화면을 표시합니다. 생체 인증을 사용할 수 있지만 실패하면 대체 버튼이 암호 화면으로 리디렉션됩니다. 설명서를 참조하십시오 :따라서 코드는 다음과 같습니다.
If Touch ID or Face ID is available, enrolled, and not disabled, the user is asked for that first. Otherwise, they are asked to enter the device passcode.
Tapping the fallback button switches the authentication method to ask the user for the device passcode.
func authenticateUser() { let authenticationContext = LAContext() var error: NSError? let reasonString = "Touch the Touch ID sensor to unlock." // Check if the device can evaluate the policy. if authenticationContext.canEvaluatePolicy(LAPolicy.deviceOwnerAuthentication, error: &error) { authenticationContext.evaluatePolicy( .deviceOwnerAuthentication, localizedReason: reasonString, reply: { (success, evalPolicyError) in if success { print("success") } else { // Handle evaluation failure or cancel } }) } else { print("passcode not set") } }
관련 자료
- unreal 4 - Pitch, Roll 및 Yaw 대신 X, Y 및 Z를 사용하는 방법
- c# - 내 코드에서이 Crc32 클래스를 사용하는 방법
- c# - ASPNET에서 ConcurrentDictionary 및 Task를 사용하는 방법
- next.js - NextJS에서 Linaria를 어떻게 사용할 수 있습니까?
- C에서 realloc을 사용하는 방법
- postgresql - 조인 SQL 쿼리에서 Case를 사용하는 방법
- mysql - LEFT JOIN으로 WHERE 조건을 사용하는 방법은 무엇입니까?
- javascript - Vue 3 사용 및 플러그인 Boostrap-vue 추가 방법?
- html - 슬라이더 틱과 함께 span 태그를 사용하는 방법은 무엇입니까?
- string - Ruby 변수 인수에서 "# {…}를 사용하는 방법?
- compression - ZLIB deflate 방법을 사용하는 방법?
- python - 입력을 사용하여 함수를 호출하는 방법은 무엇입니까?
- oop - PHP에서 MVC 패턴을 올바르게 사용하는 방법
- swift - NSStoryboardSegue와 함께 tableViewrow를 사용하는 방법
- typescript - fp-ts에서 파이프를 사용하여 if 문을 제거하는 방법
- vue.js - 계산 된 속성에서 소품을 사용하는 방법은 무엇입니까?
- android - 두 개 이상의 테이블을 만들어야하는 경우 Room 데이터베이스를 사용하는 방법은 무엇입니까?
- node.js - FFMPEG 및 노드에서 스트림을 사용하는 방법
- python - pip로 설치할 때 git repo에서 py 스크립트를 사용하는 방법
- c# : Unity에서 htmlagilitypack을 어떻게 사용할 수 있습니까?
관련 질문
- ios : 목록(SwiftUI)에서 .ondelete를 수행할 때 충돌 문제가 발생합니다. 타이머에 대해 .onReceive에서 충돌이 발생합니다.
- ios : 구조체의 특정 값을 사용자 지정 셀로 설정하는 방법은 무엇입니까?
- ios : "특성에 따라 다름" 버튼은 어디에 있습니까?
- ios : SwiftUI 섹션 목록의 정렬 순서를 동적으로 변경
- ios : 고정 너비를 VStack으로 설정하고 싶지만 작동하지 않습니다.
- ios : 미디어 컨트롤과 같은 명령 센터 구축
- ios : 범위에서 '가격'을 찾을 수 없습니다.
- IOS에서 Flutter 앱을 실행할 수 없음 -기본 앱이 이미 구성되어 있습니다.
- ios : IB Outlets를 확인한 후에도 인식할 수 없는 Selector가 UI Textfield의 Instance로 전송됨
- ios : SwiftUI 문제. 한 보기에서 다른 보기로 전환할 때 다른 보기에서 이전 보기에서 이동한 위치의 데이터를 표시합니다.
이 시점에서,이 암호 잠금 화면에 앱에액세스 할 수 없어두려워합니다. iOS와 관련이 있습니다. 패스 코드 잠금 장면 (터치 ID 사용)으로 보거나 동작하도록 고유 한 사용자 정의보기 컨트롤러를 빌드해야 할 수도 있습니다. 개인적으로 이것을 달성하기 위해 라이브러리를 사용하는 것이 좋습니다 .PasscodeLock을 시도했지만 제대로 작동합니다.