【问题标题】:Getting existing app with fingerprint authentication to work with iPhone X FaceId让现有的指纹认证应用程序与 iPhone X FaceId 一起工作
【发布时间】:2018-08-15 20:29:38
【问题描述】:

我已经开发了一个应用程序并在商店中上线。它运行良好,并实施了指纹认证。既然 Apple 已强制要求提供 iPhone X 支持,我将发布该应用程序的另一个更新。

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

我已经读过了-

  1. 应用程序会提供一个兼容性警报,说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 会怎样。该应用程序仍然可以正常运行并且不会被拒绝吗?

任何帮助或线索将不胜感激!

【问题讨论】:

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


    【解决方案1】:

    您说得对,您需要 plist 中的 NSFaceIDUsageDescription 键才能正确支持 Face ID。

    如果您使用 Xcode 9 针对 iOS 11 SDK 构建应用,即使您将目标设置为 iOS 8,您也需要包含该密钥以支持 iPhone X。

    也就是说,我不明白这可能会崩溃。您用于 Touch ID 的相同代码也支持 Face ID。

    【讨论】:

    • @Shailesh 我不知道 100%,但我会说你可以通过“生物识别身份验证”。
    【解决方案2】:

    我用它来处理 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 2021-02-26
      • 2014-09-18
      • 1970-01-01
      • 2011-04-08
      • 2018-10-28
      • 2012-05-22
      相关资源
      最近更新 更多