仅使用密码而不是 TouchID 的设备上的本地身份验证

Posted

技术标签:

【中文标题】仅使用密码而不是 TouchID 的设备上的本地身份验证【英文标题】:Local Authentication on device with Passcode only, not TouchID 【发布时间】:2015-04-06 23:46:21 【问题描述】:

假设我的应用包含敏感数据,我想确保用户在访问之前通过密码在本地进行身份验证。如Xamarin intro to touch ID article 所示,我正在使用 ios 8 的 Xamarin TouchID 身份验证。我在运行 iOS 7 的旧设备上对此进行了测试,但显然无法正常工作。所以我的问题是,如何使用 iOS 7 设备进行密码验证?这仅适用于 iOS 8 吗?


我注意到 iOS 应用 Mint 使用自定义密码。如何实现连接到 TouchID 弹出窗口中“输入密码”按钮的自定义密码?如果我知道该怎么做,我可以实现自己的自定义密码,以便它适用于 iOS 7...

【问题讨论】:

【参考方案1】:

iOS 7 无法使用 Touch ID。

要使用自定义密码,只需在 evaluatePolicy 中捕获 LAErrorUserFallback 错误。

LAContext *context = [[LAContext alloc] init];
[context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                 localizedReason:@"Your Text" reply:^(BOOL success, NSError *error) 
                     if(success) 
                     // handle success
                      else 
                         NSString *failureReason;
                         switch (error.code) 
                             case LAErrorUserFallback:
                                // show your custom passcode screen
                                 break;
                          
                     
                 ];

代码显然需要完成,您还需要处理所有其他错误情况。

【讨论】:

+1 用于在 error.code 中包含 switch 语句以处理可能发生的所有不同情况

以上是关于仅使用密码而不是 TouchID 的设备上的本地身份验证的主要内容,如果未能解决你的问题,请参考以下文章

用于移动网络的 TouchID

无法仅将本地 html 文件加载到设备上的 WKWebView 中(适用于模拟器)

本地身份验证问题

iOS8使用TouchID

横幅高度而不是仅在 iPad 上的设备高度

像 Touch Id 一样,是不是可以通过编程方式使用 iOS 密码锁?