2013-09-21 2 views
4

Я знаю, что Touch ID на iPhone 5S не может быть использован никакими другими приложениями через SDK, но я хотел посмотреть, возможно ли приложение, по крайней мере, увидеть, На устройстве включен сенсорный идентификатор. Это может служить дополнительным фактором безопасности для приложения, чтобы узнать, включен ли сенсорный идентификатор на iPhone 5S. Я знаю, что продукты MDM могут это сделать, есть ли специальный API, который нужно использовать приложением для определения этой информации?Посмотрите, включен ли сенсорный ID на iPhone 5s

ответ

0

В документации разработчика ничего не говорится о обнаружении сенсорного идентификатора на устройстве. Там определенно есть частный API, который может предоставить вам эту информацию, но использование этого было бы основанием для того, чтобы Apple не одобряла ваше приложение.

2

С 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 !!! 
    } 
} 

Обратите внимание, что iPhone 5s может иметь новую модель, так что строка платформа может быть «iPhone6, 2 "," iPhone6,3 "в будущем.

В качестве альтернативы класс UIDeviceHardware может предоставить полезную информацию, если этот класс обновлен для iPhone 5s. В настоящее время он показывает «Неизвестный iPhone» для iPhone 5.

7

Метод, который вы ищете, это LAContext's canEvaluatePolicy:error:. Он вернет НЕТ в следующих случаях:

  • Сенсорный идентификатор на устройстве отсутствует.
  • На устройстве не установлен код доступа.
  • Touch ID не имеет зарегистрированных пальцев.

Больше информации здесь: Local Authentication Framework Reference

- (BOOL) isTouchIDAvailable { 
    LAContext *myContext = [[LAContext alloc] init]; 
    NSError *authError = nil; 

    if (![myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) { 

     NSLog(@"%@", [authError localizedDescription]); 
     return NO; 
    } 
    return YES; 
} 
+0

Эта локальная база аутентификации доступна IOS 8 года SDk. – Raghav

2

Я проверить это ниже этапов.

  1. < IOS 8.0:

    self.touchIdAvailable = NO; 
    
  2. Затем проверьте, если устройство touchId доступно.

    - (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError **)error 
    
        if ("canEvaluatePolicy return YES"):{ 
         self.touchIdAvailable = YES; 
         self.osTouchIdStatus = TouchIdSetOK; 
        } 
    
  3. проверить, почему это устройство не touchID включить в блоке ошибок

    case LAErrorPasscodeNotSet: 
        case LAErrorTouchIDNotEnrolled: 
    
         self.touchIdAvailable = YES; 
         self.osTouchIdStatus = TouchIdNotSet; 
    
        break; 
    
        default: 
         self.touchIdAvailable = NO; 
         self.osTouchIdStatus = TouchIdNotSupported; 
        break; 
    
Смежные вопросы