【问题标题】:TouchID authentication inside Siri Intent ExtensionSiri Intent Extension 中的 TouchID 身份验证
【发布时间】:2020-01-28 01:25:05
【问题描述】:

我有一个带有View 类别的Intent Extension,它非常适合显示应用信息。

现在出于安全原因我需要启用TouchID,因此用户需要在请求信息之前进行身份验证。

我试过了:

func handle(intent: GetSaldoIntent, completion: @escaping (GetSaldoIntentResponse) -> Void) {

    let myContext = LAContext()

    myContext.evaluatePolicy(
    .deviceOwnerAuthenticationWithBiometrics,
    localizedReason: "Unlock to see the info",
    reply: { [unowned self] (success, error) -> Void in
        if( success ) {
            completion(GetSaldoIntentResponse.success(saldo: String(self.paymentProvider.balance)))
            return
            }
        })
        completion(GetSaldoIntentResponse(code: .failureRequiringAppLaunch, userActivity: nil))
    }
}

但是TouchID 对话框关闭了Siri 屏幕,然后对话结束:

有没有办法在Intent Extension 中请求TouchId 验证?

我知道PKPayment 做了类似的事情,但这不是交易,所以我不能使用ApplePay

【问题讨论】:

    标签: ios swift sirikit sirishortcuts


    【解决方案1】:

    Siri 已经支持授权,你只需要让 Siri 知道你的意图需要授权,而不是自己实现授权。希望对您有所帮助:

    https://developer.apple.com/documentation/sirikit/requesting_authorization_to_use_sirikit

    【讨论】:

    • 这并没有解决问题,因为 INPreferences.requestSiriAuthorization 从应用程序调用到扩展程序,我的问题是我需要扩展程序中的 LAContext().evaluatePolicy 而不关闭 Siri 对话框。但是,您的链接对IntentsRestrictedWhileLocked 有所帮助,因此至少用户需要在查看信息之前解锁屏幕。我会给你赏金,但会保持开放状态,以防有人能让它正常工作。我可能需要一个 UI 扩展。
    • @alxlives 不幸的是,苹果在这种情况下搞砸了,如果你尝试在 iOS 12 及以下的设备上运行它,它就可以正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2015-01-17
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 2015-02-02
    相关资源
    最近更新 更多