Ios 查看iPhone 5s上是否启用了触摸ID
我知道iPhone 5S上的触摸ID不能通过SDK被任何其他应用程序使用,但我想看看应用程序是否可以至少查看设备上是否启用了触摸ID。这可以作为应用程序的额外安全因素,以查看iPhone 5S上是否启用了触摸ID。我知道MDM产品可以做到这一点,应用程序是否需要使用特殊的API来确定此信息?开发者文档中似乎没有提到任何关于检测设备上是否存在触摸ID的内容。绝对有一个私人API可以为您提供这些信息,但使用它将成为苹果不批准您的应用程序的理由。由于TouchID仅出现在iPhone 5s中,您可以使用以下代码来确定硬件型号:Ios 查看iPhone 5s上是否启用了触摸ID,ios,ios7,touch-id,Ios,Ios7,Touch Id,我知道iPhone 5S上的触摸ID不能通过SDK被任何其他应用程序使用,但我想看看应用程序是否可以至少查看设备上是否启用了触摸ID。这可以作为应用程序的额外安全因素,以查看iPhone 5S上是否启用了触摸ID。我知道MDM产品可以做到这一点,应用程序是否需要使用特殊的API来确定此信息?开发者文档中似乎没有提到任何关于检测设备上是否存在触摸ID的内容。绝对有一个私人API可以为您提供这些信息,但使用它将成为苹果不批准您的应用程序的理由。由于TouchID仅出现在iPhone 5s中,您可以使
- (NSString *) checkiPhone5s {
// Gets a string with the device model
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
free(machine);
if ([platform isEqualToString:@"iPhone6,1"]) {
// it is iPhone 5s !!!
}
}
请注意,iphone5s可能有新型号,因此未来平台字符串可能是“iPhone6,2”、“iPhone6,3”
或者,如果该类针对iPhone 5s进行了更新,则该类可能会提供有用的信息。目前,它显示iPhone 5的“未知iPhone”。您正在寻找的方法是
LAContext
的canevaluation策略:错误:
。
在以下情况下,它将返回NO:
- 触摸ID在设备上不可用
- 设备上未设置密码
- 触摸ID没有注册的手指
我将分以下几个阶段对此进行检查
self.touchIdAvailable = NO;
- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError **)error
if ("canEvaluatePolicy return YES"):{
self.touchIdAvailable = YES;
self.osTouchIdStatus = TouchIdSetOK;
}
case LAErrorPasscodeNotSet:
case LAErrorTouchIDNotEnrolled:
self.touchIdAvailable = YES;
self.osTouchIdStatus = TouchIdNotSet;
break;
default:
self.touchIdAvailable = NO;
self.osTouchIdStatus = TouchIdNotSupported;
break;
此本地身份验证框架在iOS 8以后的SDk中可用。
case LAErrorPasscodeNotSet:
case LAErrorTouchIDNotEnrolled:
self.touchIdAvailable = YES;
self.osTouchIdStatus = TouchIdNotSet;
break;
default:
self.touchIdAvailable = NO;
self.osTouchIdStatus = TouchIdNotSupported;
break;