Allow Face ID permission alert

beebcon picture beebcon · Oct 20, 2017 · Viewed 9.8k times · Source

My app (running in iPhone X Simulator Xcode 9.0.1) is asking me for permission to use Face ID.

The alert says:

Do you want to allow <appName> to use Face ID? This app was designed to use Touch ID and may not fully support Face ID.

I was expecting that the few changes I made to the new APIs in the LocalAuthentication framework (e.g. biometryType) was supposed to basically work for Face ID.

Is there something else I need to do to make it so my app is designed to fully support Face ID?

Answer

beebcon picture beebcon · Oct 20, 2017

It appears that you need to add the NSFaceIDUsageDescription to your Info.plist in order to support Face ID.

Also, the simulator alert is only for simulator, without that Info.plist key, the app apparently should crash on a real device without it.

Thanks to these dudes for helping me learn this - What is NSFaceIDUsageDescription - Face ID Usage Description Info.plist key?


Protip:

Prior to the permission prompt, [LAContext canEvaluatePolicy:error:] returns YES for biometrics if the device is capable of it.

iOS won't prompt the user for permission until the first call to [LAContext evaluatePolicy:localizedReason:reply:].

If the user does not grant permission, then all future calls to canEvaluatePolicy will return NO (error Code=-6 "User has denied the use of biometry for this app."). This is an odd nuance.