У меня возникли некоторые проблемы с пониманием возвращаемых значений, которые я получаю даже в новом проекте с только приведенным ниже кодом.
- (void)viewDidLoad {
[super viewDidLoad];
LAContext* touchContext = [LAContext new];
NSError* policyEvaluationError = nil;
[touchContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
error:&policyEvaluationError];
NSLog(@"\n\n %@", policyEvaluationError);
}
Это результаты только для симуляторов iPad, iOS 10.3.1- 11.3.
iPad (5-го поколения) - «Биометрия недоступна на этом устройстве.»
iPad Air - «Биометрия недоступна на этом устройстве».
iPad Air 2 - «Идентификационные данные не зарегистрированы.»
iPad Pro (9,7 дюйма) - «Биометрия недоступна на этом устройстве».
iPad Pro (12,9 дюйма) (2-го поколения) - «Биометрия недоступна на этом устройстве».
Эти результаты «Биометрия недоступна на этом устройстве» происходят, когда эти устройства зарегистрированы или нет.
Все протестированные типы устройств iPhone также возвращают «Идентификационные данные не зарегистрированы», как, например, iPad Air 2, что я ожидаю, когда они не зарегистрированы, но имеют аппаратное обеспечение touchID. При регистрации просто не возникает ошибки.
На некоторых реальных устройствах iPad результаты также могут отличаться, но не одинаково. Некоторые устройства не сохраняют отпечатки пальцев и возвращают сообщение «Биометрия недоступна на этом устройстве», в то время как другие просто возвращают зарегистрированное значение / ноль.. С сохраненными отпечатками пальцев все они, кажется, ведут себя так, как я ожидал.
Насколько я знаю, мы использовали этот код в производстве в течение довольно долгого времени без жалоб.связан с этой темой, но мы только недавно заметили это в рамках разработки / QA.
Этот код просто ненадежен на всех устройствах, возможно, что-то изменилось или я что-то здесь не так делаю?