通过指纹认证获取现有应用程序以与iPhone X FaceId一起使用

时间:2018-08-15 20:29:38

标签: ios iphone iphone-x touch-id face-id

我已经开发了一个应用程序,并且可以在商店中使用。它运行良好,并已实现指纹认证。既然Apple已强制提供iPhone X支持,我将再发布该应用程序的一个更新。

但是,我想了解如果在iPhone X上安装已经提交的应用程序版本会发生什么情况??

我已经读过-

  1. App将提供兼容性警告,提示This app was designed to use Touch ID and may not fully support FaceID,但是如果我们在plist中插入密钥NSFaceIDUsageDescription,它就会消失。

  2. 我还读到,如果使用iOS 11 SDk(在plist中没有键NSFaceIDUsageDescription进行构建),应用程序将崩溃。

这是我的问题-如果该应用是使用iOS 8构建并安装在iOS 11中的,该应用仍会崩溃吗?如果没有,确切的行为将如何..?我已经在模拟器中进行了测试,该应用程序没有崩溃,但我手边没有iPhone X,也无法在实际设备上进行交叉检查。

注意-在设备上而非设备模拟器上更多地观察到此崩溃。

  1. 在iPhone X上运行的应用程序中使用FaceId一词有多重要。如果我使用诸如“生物识别”之类的通用术语代替touchId和FaceId,该怎么办。该应用程序仍然可以正常使用并且不会被拒绝吗?

任何帮助或潜在客户都会受到感激!

2 个答案:

答案 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。