Почему мои динамические 3D Touch Quick Actions перестают работать, когда я добавляю LocalAuthentication? - PullRequest
0 голосов
/ 26 октября 2018

Всякий раз, когда я пытаюсь добавить 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) делает это.

Можно ли использовать динамические быстрые действия и требовать проверки подлинности для определенных? Или кто-нибудь может пролить свет на то, как Аполлону удается это сделать?

Заранее спасибо.

...