Our app uses Face ID to optionally secure access to the app for device owner. This not the new 'Require Face ID' feature of iOS 18 - this is our own custom implementation that has some other related logic for authentication handling.
Starting in iOS 18.3.1, starting the app results in multiple Face Id checks being fired - sometimes just a couple but sometimes many more.
Curiously, this is happening even when I completely disable any code we have that prompts for Face ID. It appears to come from nowhere.
This does not happen on prior iOS 18 releases so, while I might be doing something improper in the code, something specific has changed in iOS 18.3.1 to cause this issue to manifest.
I'm looking for advice as to what could be occurring here, how to debug a Face Id check that appears to come from nowhere, and what, if any, workarounds exist.
I’d be very surprised if the keychain wasn’t enforcing this access control constraint. My best guess here is that your app is dealing with old keychain entries. Remember that, on current systems, deleting an app does not delete its keychain items [1]. The next time you install and run the app, it’ll find its items waiting for it in the keychain.
When I’m testing things like this I usually add a Reset button to my UI. Tapping that deletes all my keychain items so that I can start afresh.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
[1] Although that behaviour is not guaranteed. See this post for some old, but still relevant, backstory.