每当我尝试将LocalAuthentication添加到我的应用程序时,我的(动态)3D快速操作就会停止工作。
这是AppDelegate.swift中的函数,我在其中添加了快速操作:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let triggerNotification = UIApplicationShortcutItem(type: "triggerNotification", localizedTitle: "Trigger notification", localizedSubtitle: nil, icon: UIApplicationShortcutIcon(type: .time), userInfo: nil)
UIApplication.shared.shortcutItems = [triggerNotification]
return true
}
这是我在ViewController.swift中设置LocalAuthentication的方法:
override func viewDidAppear(_ animated: Bool) {
// ... snip ...
let context = LAContext()
var err: NSError?
var policy: LAPolicy
if (context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &err)) {
policy = .deviceOwnerAuthenticationWithBiometrics
} else {
policy = .deviceOwnerAuthentication
}
context.evaluatePolicy(policy, localizedReason: NSLocalizedString("Please authenticate to continue...", comment: "")) { (success: Bool, error: Error?) in
if !success {
print(":(")
} else {
print("Success!")
}
}
}
我无法弄清楚我在做什么错。没有该代码,我的快速操作就可以完美地工作。
在应用程序中使用LocalAuthentication时,从安全角度来看,动态快速操作应停止工作,这是有道理的,但由于我已经看过另一个应用程序(用于Reddit的Apollo客户端),因此应该可行它。
是否可以使用动态快速操作并对某些操作进行身份验证?还是有人可以阐明Apollo如何做到这一点?
谢谢。