我已经开发了一个应用程序,并且可以在商店中使用。它运行良好,并已实现指纹认证。既然Apple已强制提供iPhone X支持,我将再发布该应用程序的一个更新。
但是,我想了解如果在iPhone X上安装已经提交的应用程序版本会发生什么情况??
我已经读过-
App将提供兼容性警告,提示This app was designed to use Touch ID and may not fully support FaceID
,但是如果我们在plist中插入密钥NSFaceIDUsageDescription
,它就会消失。
我还读到,如果使用iOS 11 SDk(在plist中没有键NSFaceIDUsageDescription
进行构建),应用程序将崩溃。
这是我的问题-如果该应用是使用iOS 8构建并安装在iOS 11中的,该应用仍会崩溃吗?如果没有,确切的行为将如何..?我已经在模拟器中进行了测试,该应用程序没有崩溃,但我手边没有iPhone X,也无法在实际设备上进行交叉检查。
注意-在设备上而非设备模拟器上更多地观察到此崩溃。
FaceId
一词有多重要。如果我使用诸如“生物识别”之类的通用术语代替touchId和FaceId,该怎么办。该应用程序仍然可以正常使用并且不会被拒绝吗?任何帮助或潜在客户都会受到感激!
答案 0 :(得分:0)
我用它来处理faceID或touchID
if (@available(iOS 11.0, *)) {
if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) {
if (myContext.biometryType == LABiometryTypeTouchID) {
SwitchItem *touchIdItem = [[SwitchItem alloc] init];
touchIdItem.name = NSLocalizedString(@"PROFILE_SETTINGS_TOUCHID", nil);
touchIdItem.active = [[[Global instance] objectInKey:KEY_TOUCHID_ENABLED] boolValue];
[self.dataSource addObject:touchIdItem];
} else if (myContext.biometryType == LABiometryTypeFaceID) {
SwitchItem *faceIdItem = [[SwitchItem alloc] init];
faceIdItem.name = NSLocalizedString(@"PROFILE_SETTINGS_FACEID", nil);
faceIdItem.active = [[[Global instance] objectInKey:KEY_FACEID_ENABLED] boolValue];
[self.dataSource addObject:faceIdItem];
}
}
} else {
if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) {
SwitchItem *touchIdItem = [[SwitchItem alloc] init];
touchIdItem.name = NSLocalizedString(@"PROFILE_SETTINGS_TOUCHID", nil);
touchIdItem.active = [[[Global instance] objectInKey:KEY_TOUCHID_ENABLED] boolValue];
[self.dataSource addObject:touchIdItem];
}
}
您必须评估iOS版本,然后才能假设小工具具有touchID或faceID
答案 1 :(得分:0)
您说对了,您需要在plist中使用NSFaceIDUsageDescription
键才能正确支持Face ID。
如果您针对iOS 11 SDK使用Xcode 9构建了应用程序,即使将目标设置为iOS 8,也需要包括该密钥以支持iPhoneX。
也就是说,我不知道这可能是怎么崩溃的。您用于Touch ID的相同代码也支持Face ID。