如何使用 iOS 9.2 新的“连续手指检测”Touch ID 功能

Posted

技术标签:

【中文标题】如何使用 iOS 9.2 新的“连续手指检测”Touch ID 功能【英文标题】:How do I use the new iOS 9.2 Touch ID feature of "sequential finger detection" 【发布时间】:2016-04-21 10:38:57 【问题描述】:

来自release notes:

支持可重复使用的 Touch ID 匹配。 evaluateAccessControl: 和 evaluatePolicy:localizedReason:reply: 可以使用上一次手机解锁的匹配项。

对我来说,这意味着如果使用不同的手指,则可以触发一个事件。

抽象例子:

    用手指 1 登录,然后用手指 1 登录,然后再登录。没有事件。

    如果使用手指 2,则引发事件。后续使用手指2无事件。

我完全同意我不知道用的是什么手指,只是使用了一个不同的手指。该信息可能会为我提供足够的信息来采取行动。

用例

我正在创建一个应用程序来协助处理家庭暴力情况,如果要求受害者解锁启用了触控 ID 的应用程序,并且使用了不同的手指,那么请求帮助的呼叫就会从应用程序中谨慎删除。

研究

这是 Apple 网站上发布说明之外的 not documented,但它存在于 Xamarin's site 中。我跟进了developer forums,不想等待确认文档错误。

在我的场景中,成人和儿童共享一个设备,他们都注册了 TouchID。我需要确定是否使用其他手指来保护敏感设置。

问题

如何使用LocalisedReasonReply 来确定是否使用其他手指来解锁手机? (还是我误解了新功能)

[Foundation.Export("evaluateAccessControl:operation:localizedReason:reply:")]
public virtual Void EvaluateAccessControl (SecAccessControl accessControl,LAAccessControlOperation operation, String localizedReason, [ObjCRuntime.BlockProxy(typeof(ObjCRuntime.Trampolines/NIDActionArity2V1))]Action`2 reply)

供参考,我pasted the LAContext.h file here

【问题讨论】:

我没有参考资料,但我不认为这个功能意味着你认为它的作用。我相信这是一种更简单的情况,如果用户最近使用 touch id 进行了身份验证,您的身份验证可以绕过用户触摸传感器的要求。即,此处的“顺序”表示对用户进行身份验证的顺序请求,而不是用于进行身份验证的手指序列。 @mah 我认为您描述的该功能也存在于旧版本中...... 您确实意识到您引用的发行说明是 9.0 发行说明,而不是 9.2?我同意@mah,我不太明白该描述如何与您所追求的功能相匹配。包含 -[LAContext evaluateAccessControl:operation:localizedReason:reply:] 的 9.0 API Diffs 还包含 LAContext.touchIDAuthenticationAllowableReuseDuration,这似乎暗示它们的意思确实是如果您允许,用户不需要再次触摸。 【参考方案1】:

“支持可重复使用的 Touch ID 匹配...”表示:-

您可以通过在 evaluateAccessControl: 和 evaluatePolicy:localizedReason:reply: 方法中指定时间间隔,在您的应用中重复使用设备解锁身份验证。

通过使用 LAContext 属性“touchIDAuthenticationAllowableReuseDuration”,您可以在应用程序中重复使用设备解锁身份验证,这是因为在设备解锁时您已经对自己进行了身份验证。所以不需要再次认证。(新引入iOS 9)

注意:持续时间必须以秒为单位。它的默认值为“0”,您指定的持续时间最长为 5 分钟,超过 5 分钟不会增加接受的间隔。

【讨论】:

以上是关于如何使用 iOS 9.2 新的“连续手指检测”Touch ID 功能的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中使用 PostgreSQL 9.2 JSON 数据类型?

IOS 9.2 Xcode 7.2 Facebook 登录问题

在 iOS 9.1/9.2 上使用 EXC_BAD_ACCESS CODE 1 的 AppDelegate 类声明应用程序崩溃

在 iOS 9.2 中使用企业部署创建 ipa 文件

在 iOS 9.2 中使用 Crashlytics 缺少 dSYM

为啥应用存档在 iOS、swift、xcode 9.2 中使用自定义框架失败