Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TouchID authentication inside Siri Intent Extension

I have an Intent Extension with the View category that is working pretty good for showing an app info.

Now I need to enable TouchID for security reasons, so the user needs to authenticate before requesting the info.

I tried this:

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))
    }
}

But the TouchID dialog closes the Siri screen and then the conversation ends:

screens

Is there a way to request for TouchId validation inside an Intent Extension?

I know PKPayment do something similar, but this isn't a transaction so I can't use ApplePay.

like image 846
alxlives Avatar asked Sep 27 '19 17:09

alxlives


Video Answer


1 Answers

Siri already supports the authorisation, you just need to let Siri know that your intent requires authorisation rather implementing authorisation yourself. Hope that helps you:

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

like image 160
Amir.n3t Avatar answered Sep 21 '22 10:09

Amir.n3t