1

Problem Description: I have a main App which is widely used and handles touch id based login with a registration flow.

At the time of touch id registration within my app, we store the evaluatedDomainState in the app user defaults.

When the customer uses Touch ID/ face ID to login, we check 2 things on the device before invoking server

1. Touch id verification

2. Comparing evaluatedDomainState for identifying fingerprint changes on device. If evaluatedDomainState doesn't match, we ask the customer to re-register touch id.

We are enhancing this app by adding an keyboard extension. The keyboard will use the same login flow and user defaults. In the login process via keyboard, point 1 is successful. Point 2 fails from keyboard extension although successful from main app. Here is the code.

self.touchIDHash = self.context.evaluatedPolicyDomainState;
NSData *savedHash = [[NSUserDefaults standardUserDefaults] objectForKey:@"TouchIdHash"];
BOOL fingerPrintChanged = savedHash && ![savedHash isEqualToData:self.touchIDHash];

fingerPrintChanged is always true from keyboard extension login and false from main app login.

Any inputs to make this work will be much helpful.

Sagar Bhut
  • 657
  • 6
  • 28

1 Answers1

0

Due to fingerPrint is setup in your container APP,
verify it in container app then navigate back to extension, maybe it's workaround for you.

  • @MRizwan33 you could refer to this. https://stackoverflow.com/questions/42516357/how-does-googles-custom-ios-keyboard-gboard-programmatically-dismiss-the-fron – Winters Sep 03 '18 at 07:45