当前位置:  开发笔记 > 编程语言 > 正文

iOS以编程方式取消TouchID身份验证对话框

如何解决《iOS以编程方式取消TouchID身份验证对话框》经验,为你挑选了1个好方法。

是否可以在LAContext.evaluatePolicy通话后以编程方式取消TouchID警报对话框?如果是的话:怎么样?



1> rickster..:

并非每个Apple发布的API都会将其放入developer.apple.com(或Xcode的文档查看器)中的文档中.API差异列出公共API,因此您在头文件中看到的任何内容(请参阅LocalAuthentication/LAContext.h参考资料)和从这些标头生成的Swift接口.标题中的任何内容都是公共API,因此您可以随意调用它.

有时(但不总是)未记录的API有很好的标题注释解释如何使用它们...谢天谢地LAContext.invalidate()是其中之一:

/// Invalidates the context.
///
/// @discussion The context is invalidated automatically when it is (auto)released. This method
///             allows invalidating it manually while it is still in scope.
///
///             Invalidation terminates any existing policy evaluation and the respective call will
///             fail with LAErrorAppCancel. After the context has been invalidated, it can not be
///             used for policy evaluation and an attempt to do so will fail with LAErrorInvalidContext.
///
///             Invalidating a context that has been already invalidated has no effect.
@available(iOS 9.0, *)
public func invalidate()

实际上,看起来invalidate()在触摸ID警报可见时进行呼叫应该将其解除.(我没有试过自己.)


iOS 11更新:请注意,在具有Face ID而非Touch ID的设备上,调用时出现的类似警报/ HUD的UI LAContext.evaluatePolicy不需要或允许交互,并在成功验证后自行解除.从理论上讲,invalidate呼叫仍然会将其解除(或者如果Face ID无法识别用户,则会显示后续,实际交互式警报).

但是,假设在所有可能的设备和身份验证方法上,您总是有足够的时间LAContext在请求后取消身份验证,这可能并不明智.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有