在我的应用中,我想知道用户是否设置了密码或指纹(touchID)。这是一个非常简单的方法:[LAContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthentication error:error]
。
但是,Apple's docs说LAPolicyDeviceOwnerAuthentication
仅适用于iOS9及更高版本。我不想在没有解释的情况下让iOS 8用户崩溃,即使它变老了。问题是,我已经在iOS8.4模拟器上尝试过它了似乎来编译并且正常工作。
如果我在iOS 8上使用LAPolicyDeviceOwnerAuthentication
会有什么不良影响?
答案 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作为其最低支持的操作系统版本。