添加LocalAuthentication时,为什么动态3D Touch快速操作停止工作?

时间:2018-10-26 19:06:56

标签: ios swift 3dtouch quickaction localauthentication

每当我尝试将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如何做到这一点?

谢谢。

0 个答案:

没有答案