나는 로그인 ID로 터치 ID를 사용하는 앱을 개발 중입니다. 앱이 처음 출시 될 때만 터치 ID를 요청해야합니다 (예 : 앱이 백그라운드에서 전경에 들어가면 터치 ID 인증을 요청하지 않음). 여기에 내가 touchID을 표시 할 것입니다 :TouchID 오류 코드 : -1004 NSLocalizedDescription : 사용자 상호 작용이 필요합니다.
AppDelegate.swift : 내가 지금처럼 터치를 요청 LoginViewController의 viewDidAppear()에서 다음
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let loginViewController = storyboard.instantiateViewControllerWithIdentifier("login") as! LoginViewController
rootViewController = loginViewController
let navigationController = UINavigationController(rootViewController: rootViewController)
window!.rootViewController = navigationController
}
:
LoginViewController.swift :
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let context = LAContext()
if context.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: nil) {
context.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics,
localizedReason: NSLocalizedString("Login To Your Account", comment: ""),
reply: { [weak self] (success, error) in
dispatch_async(dispatch_get_main_queue(), {
if success {
self?.loginUser()
} else if error!.code != LAError.UserCancel.rawValue {
self?.focusOnPassword()
} else
})
})
} else {
loginUser()
}
}
일부 테스터는 n TouchID 알림을 전혀받지 못합니다. 그냥 바로 암호 화면을 보여줍니다. 오류 로깅을 추가했는데 오류가 발생했습니다 :
Domain: com.apple.LocalAuthentication Code: -1004 NSLocalizedDescription: User interaction is required.
그리고 나는 전혀 재현 할 수 없습니다. Touch ID는 모든 테스트 장치에서 정상적으로 작동하므로 그 이유를 알 수 없습니다. iPhone 6, 6S, 6s Plus, iOS 9.3.1-9.3.3에서 버그를 받았습니다.
는 내가 전에 그 질문을보고 작품 - 터치 ID는
@ A.Buksha 그 게시물은 "앱이 백그라운드에서 깨어나고 코드의 어딘가에서 깨어나 Touch ID를 요청할 때"라고 말합니다. 즉, 사용자가 생체 인식을 제공하기 전에 앱이 백그라운드에서 전경으로 갈 수도 있습니다. – D4ttatraya
동일한 오류가 발생합니다. 내 앱이 터치 ID를 묻는 지점에서 포 그라운드에 확실히 있습니다. – onnoweb