ios 如何检测Swift中未触发的本地认证权限状态?

bmp9r5qi  于 2023-02-01  发布在  iOS
关注(0)|答案(1)|浏览(141)

我正在Swift中将生物识别登录实现到我的iOS应用程序中,我使用了以下API:
var permissions = context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics,error: &failureReason)
检查是否支持生物识别。如果允许Face ID权限,则工作正常。但是,卸载并从XCode重新运行后,在没有任何权限提示的情况下调用canEvaluatePolicy,它仍然在响应闭包中返回支持的生物识别。我想知道允许权限之前和允许权限之后有什么不同。x1c 0d1x
我可以知道任何解决方案/方法来知道这个许可状态,谢谢。

zbsbpyhn

zbsbpyhn1#

当您拨打电话时,例如:

var permissions = context.canEvaluatePolicy(.deviceOwnerAuthentication, error: &failureReason)

则iOS将运行以下检查:

  • 器械是否具有Face ID功能?
  • 是:设备上是否设置了Face ID?
  • 是:是否启用了应用的面孔ID权限?
  • 是:返回true
  • 否:回退到设备密码
  • 否:回退到设备密码
  • 否:回退到Touch ID
  • 器械是否具有Touch ID功能?
  • 是:设备上是否设置了Touch ID?
  • 是:是否启用了应用的Touch ID权限?
  • 是:返回true
  • 否:回退到设备密码
  • 否:回退到设备密码
  • 否:回退到设备密码
  • 器械是否设置了密码?
  • 是:返回true
  • No:返回false(无Face ID、无Touch ID、无密码)

当您在全新安装应用后首次调用evaluatePolicy时,iOS将提示用户是否应允许Face ID(如果设备支持Face ID且设备上已设置Face ID),并将显示应用提供的原因字符串,该字符串已输入Info.plist中的“隐私- Face ID用法描述”。
用户的选择会影响应用的Face ID权限。用户做出选择后,评估过程将遵循与上图相同的逻辑。iOS将根据结果通过Face ID、Touch ID或密码进行身份验证。
如果你删除了一个应用程序,然后通过Xcode进行全新安装,那么整个过程会重新开始,用户在第一次使用时会再次得到提示。
LAContextbiometryType值与应用的权限无关。它是设备支持的内容,即面孔ID、触控ID或两者都不支持。该值允许应用在用户界面中使用适当的消息传递。
例如,您可以使用该值将开关标记为“启用面部ID登录”或“启用触摸ID登录”。
该应用程序的权限最终将决定是否面部ID或触摸ID(基于设备的功能)将最终回落到只要求密码。

相关问题