Всякий раз, когда я пытаюсь добавить LocalAuthentication в свое приложение, мои (динамические) 3D Quick Actions перестают работать.
Это функция в 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
}
А вот как я настраиваю LocalAuthentication (в ViewController.swift):
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 используется в приложении, но это должно быть возможно, поскольку я видел, как другое приложение (клиент Apollo для Reddit) делает это.
Можно ли использовать динамические быстрые действия и требовать проверки подлинности для определенных? Или кто-нибудь может пролить свет на то, как Аполлону удается это сделать?
Заранее спасибо.