gpt4 book ai didi

iOS8 检查设备是否有 Touch ID

转载 作者:IT王子 更新时间:2023-10-29 08:20:27 25 4
gpt4 key购买 nike

LAContext 有方法检查设备是否可以评估触摸 ID 并给出错误消息。问题是系统在两种情况下给出了相同的错误消息“LAErrorPasscodeNotSet”:

1) 如果用户有 Touch ID,但在设置中将其关闭(iPhone 5s with iOS8)

2) 如果设备没有 Touch ID (iPad with iOS8)

问:如何查看设备是否支持 Touch ID,但尚未在设置中开启?

更新:

已就此漏洞 (ID# 18364575) 向 Apple 创建票证并收到答复:

工程部门已根据以下信息确定此问题的行为符合预期:

如果未设置密码,您将无法检测到 Touch ID 的存在。设置密码后,canEvaluatePolicy 最终将返回 LAErrorTouchIDNotAvailable 或 LAErrorTouchIdNotEnrolled,您将能够检测 Touch ID 存在/状态。

如果用户在带有 Touch ID 的手机上禁用密码,他们知道他们将无法使用 Touch ID,因此应用程序不需要检测 Touch ID 的存在或推广基于 Touch ID 的功能。 "

最佳答案

也许您可以编写自己的方法来检查您在哪个设备上运行,因为如果返回的错误相同,则很难确定是否支持 Touch ID。我会选择这样的东西:

int sysctlbyname(const char *, void *, size_t *, void *, size_t);

- (NSString *)getSysInfoByName:(char *)typeSpecifier
{
size_t size;
sysctlbyname(typeSpecifier, NULL, &size, NULL, 0);

char *answer = malloc(size);
sysctlbyname(typeSpecifier, answer, &size, NULL, 0);

NSString *results = [NSString stringWithCString:answer encoding: NSUTF8StringEncoding];

free(answer);
return results;
}

- (NSString *)modelIdentifier
{
return [self getSysInfoByName:"hw.machine"];
}

获得模型标识符后,我将检查模型标识符是否等于是支持 Touch ID 的模型之一:

- (BOOL)hasTouchID
{
NSArray *touchIDModels = @[ @"iPhone6,1", @"iPhone6,2", @"iPhone7,1", @"iPhone7,2", @"iPad5,3", @"iPad5,4", @"iPad4,7", @"iPad4,8", @"iPad4,9" ];

NSString *model = [self modelIdentifier];

return [touchIDModels containsObject:model];
}

该数组包含所有支持 Touch ID 的模型 ID,它们是:

  • iPhone 5s
  • iPhone 6
  • iPhone 6+
  • iPad Air 2
  • iPad 迷你 3

这种方法唯一的缺点是,一旦发布带有 Touch ID 的新设备,就必须手动更新模型数组。

关于iOS8 检查设备是否有 Touch ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26026563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com