Siri意图扩展内的TouchID身份验证

8

我有一个具有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 屏幕,导致对话结束:

screens

有没有一种方法可以在 Intent Extension 中请求进行 TouchId 验证?

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

1个回答

1

这并没有解决问题,因为INPreferences.requestSiriAuthorization是从应用调用到扩展程序的,我的问题是我需要一个在不关闭Siri对话框的情况下从扩展程序中进行LAContext().evaluatePolicy。但是,您提供的链接有助于IntentsRestrictedWhileLocked,因此至少用户在检查信息之前需要解锁屏幕。我会给你悬赏,但是我会把它留着,以防有人能够使其正常工作。我可能需要一个UI扩展程序。 - alxlives
@alxlives 很不幸,苹果在这种情况下出了一些问题,如果你尝试在 iOS 12 及以下的设备上运行它,它将正常工作。 - mike vorisis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接