Integracja dotykowy ID
Teraz przejdziemy do głównej części tutorialu ... Touch ID integracji z aplikacją. Jak się okazało, Apple opracował dość standardowy kod dostępu do Touch ID.Kod pochodzi z lokalnej Framework uwierzytelniania i przedstawia się następująco:
LAContext *myContext = [[LAContext alloc] init];
NSError *authError = nil;
NSString *myLocalizedReasonString = @"Used for quick and secure access to the test app";
if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) {[myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:myLocalizedReasonString
reply:^(BOOL success, NSError *error) {
if (success) {
// User authenticated successfully, take appropriate action
}
else {
// User did not authenticate successfully, look at error and take appropriate action
}
}];
}
else {
// Could not evaluate policy; look at authError and present an appropriate message to user }
Pozwala spojrzeć na każdej linii, aby zobaczyć, co robi:
Linia 1: Tutaj możemy utworzyć obiekt LAContext. Klasa LAContext odpowiada za obsługę kontekstu uwierzytelniania. Mówiąc prościej, używamy obiektu LAContext w celu sprawdzenia, czy dostępny jest typ uwierzytelniania. W przypadku tego samouczka później sprawdzimy, czy opcja "touch" jest opcją.
Wiersz 2: Potrzebujemy NSError, aby LAContext mógł go użyć, aby powrócić, jeśli wystąpił błąd.
Linia 3: Ustawiamy NSString z opisem umieszczonym na ekranie, aby poinformować użytkownika, dlaczego na ekranie pojawił się ekran dotykowy.
Wiersz 5: W tym miejscu wstawiamy stałą LAContext, wywołując metodę canEvaluatePolicy: i wysyłając jej stałą LAPolicy jako argument. W takim przypadku przekazujemy LAPolicyDeviceOwnerAuthenticationWithBiometrics. Jeśli to się nie powiedzie, albo identyfikator dotykowy nie jest skonfigurowany na kompatybilnym urządzeniu, albo dotykowy ID nie jest dostępny na urządzeniu ... pomyśl o iPhone 4S, 5 lub 5c z uruchomioną aplikacją. Nie uwzględnia to również urządzenia z systemem iOS 7, więc jeśli planujesz uruchomić uwierzytelnianie odcisków palców w aplikacji, upewnij się, że sprawdzasz, czy pracujesz na zgodnym urządzeniu, a jeśli nie, udostępnij inne opcje, takie jak jako hasło do kodu PIN, aby uzyskać dostęp do aplikacji.
Linie 6, 7 i 8: Jeśli użytkownik może uwierzytelnić się za pomocą danych biometrycznych, możemy teraz wywołać metodę evaluatePolicy na naszym obiekcie LAContext. Robimy to, przekazując tę samą stałą, LAPolicyDeviceOwnerAuthenticationWithBiometrics, jak również przekazując nasz ciąg powodu, a następnie określając blok dla odpowiedzi, którą należy obsłużyć.
Otrzymamy w rezultacie TAK lub NIE. Jeśli TAK, to linia 10 jest tam, gdzie umieszczamy kod dla pozytywnej odpowiedzi. Podobnie, wiersz 12 jest tam, gdzie umieszczamy nasz kod błędu.
Wreszcie w linii 15 mamy instrukcję ELSE, która działa, jeśli wiersz 5 nie przejdzie testu ... tzn. Dane biometryczne nie są dostępne. Możemy sprawdzić wskaźnik authError, aby uzyskać powód i przedstawić go użytkownikowi, jeśli to konieczne.
Wreszcie, aby uzyskać to, by nie pokazać błędy, musimy importować lokalnej ramy uwierzytelniania się do naszego projektu:
Tak, pozwala dodać ten kod do naszego projektu. Otwórz ViewController.m i u góry, zaimportuj lokalny framework uwierzytelniania.
więcej szczegółów wizyty link: http://www.devfright.com/touch-id-tutorial-objective-c/
Ta odpowiedź inżyniera przypomina o tym, jak poprosić o pozwolenie na lokalizację (jeśli tak się stało wyłączyłeś lub nie autoryzowałeś aplikacji, a następnie nie pytaj ponownie). Problem polega na tym, że zakłada on zaznajomienie się z funkcjami i ustawieniami ze strony użytkownika, tj. Że zawsze będzie wiedział o ich ponownym włączeniu w Ustawieniach. Jednak z mojego doświadczenia wynika, że jest to myślenie życzeniowe ... Użytkownicy w oczywisty sposób zapominają o tych rzeczach. – StephenT
Wygląda na to, że Apple to naprawił: iOS 8.1 iPad 3 (bez dotyku) - LAErrorPasscodeNotSet, iOS 8.4 iPad 3 (bezdotykowo) - LAErrorTouchIDNotAvailable – Uladzimir
Po prostu z ciekawości, o projekcie Twojej aplikacji: dlaczego miałbyś na względzie, czy urządzenie obsługuje TouchID , kiedy użytkownik w szczególności go wyłączył, a mimo to nie jest dostępny dla Twojej aplikacji? –