ログイン用のタッチIDを使用するアプリで作業しています。最初の起動時にのみタッチIDを要求する必要があります(アプリがバックグラウンドからフォアグラウンドに入るときにタッチID認証を要求しません)。ここで私はtouchIDを表示するために何をすべきかです:TouchIDエラーコード:-1004 NSLocalizedDescription:ユーザーのやりとりが必要です
AppDelegate.swift:
LoginViewController.swift:
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のviewDidAppear()で、私はそうのようなタッチを求めます
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からバグが届きました。
に動作します。しかし、AppDelegateのメソッドでは、バックグラウンドモードのtouchID関連コードは実行しません。私がtouchIDを求める時間は、アプリケーションが最初に起動されたときで、今回は 'applicationWillEnterForeground'が呼び出されることはありません。 –
@ A.Bukshaこの記事では、「あなたのアプリがバックグラウンドから目覚めてコードのどこかで目を覚ましたときにTouch IDを要求しています」というメッセージが表示されます。 – D4ttatraya
同じエラーが発生します。私のアプリは間違いなくタッチIDを要求するところで前景にいる。 – onnoweb