如果我在iOS 8上使用LAPolicyDeviceOwnerAuthentication会发生什么?

时间:2016-09-13 17:11:59

标签: ios objective-c touch-id

在我的应用中,我想知道用户是否设置了密码或指纹(touchID)。这是一个非常简单的方法:[LAContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:error]

但是,Apple's docsLAPolicyDeviceOwnerAuthentication仅适用于iOS9及更高版本。我不想在没有解释的情况下让iOS 8用户崩溃,即使它变老了。问题是,我已经在iOS8.4模拟器上尝试过它了似乎来编译并且正常工作。

如果我在iOS 8上使用LAPolicyDeviceOwnerAuthentication会有什么不良影响?

2 个答案:

答案 0 :(得分:1)

我使用类似的代码:

LAPolicy localAuthPolicy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
if (![[UIDevice currentDevice].systemVersion hasPrefix:@"8."]) {
    localAuthPolicy = LAPolicyDeviceOwnerAuthentication;
}

这确保我只在iOS 9及更高版本上使用LAPolicyDeviceOwnerAuthentication

当您尝试使用LAPolicyDeviceOwnerAuthentication时,iOS 8设备上实际发生的情况没有记录。任何事情都不会崩溃,但是由于未知值而认证可能会返回NO,或者它可能会成功,因为iOS 8只有一个有效值而且可能不会进行任何检查。

不幸的是,Objective-C没有为有效的枚举值提供任何运行时检查,就像你可以使用常量,方法和类一样。

答案 1 :(得分:0)

如果您对iOS 9以下的任何内容使用LAPolicyDeviceOwnerAuthentication,该应用程序将崩溃。这就是我的应用程序发生的事情,当我没有意识到这不适用于iOS 9以下的任何内容,但我的应用程序支持iOS 8.x作为其最低支持的操作系统版本。