Zgadzam się z Paulem Cezanne, nie sądzę, że można zrobić przechwytywanie, gdy proces TouchID jest aktywny. Chociaż nie widzę żadnych konkretnych informacji ani w dokumentach, ani w plikach nagłówkowych, niektóre testy pozwalają sprawdzić, co się dzieje.
Po pierwsze, monit TouchID jest uruchamiany poza procesem.
1. Uruchom swoją aplikację TouchID na urządzeniu w debugerze.
2. Pobierz aplikację, aby wyświetlić monit TouchID.
3. W Xcode zatrzymaj aplikację.
Zwykle aplikacja została zatrzymana na urządzeniu, ale w takim przypadku możesz nadal używać odcisku palca lub przycisku anulowania, aby zamknąć okno dialogowe. Po zamknięciu zgłoszenia TouchID aplikacja zostanie wstrzymana, tak jak się spodziewałeś.
Ustaw punkt przerwania w wywołaniu zwrotnym evaluatePolicy. Zaakceptuj TouchID za pomocą odcisku palca, a zobaczysz, że blok jest wywoływany z CoreAuthentication.daemon.
-[ViewController startTouchID:]_block_invoke at .../testTouchIDThreadding/testTouchIDThreadding/ViewController.m:60
-[LAContext evaluatePolicy:options:reply:]_block_invoke() /*THIS IS MY BLOCK*/
...
-[NSXPCConnection _sendInvocation:withProxy:remoteInterface:withErrorHandler:timeout:userInfo:]_block_invoke310()
...
Enqueued from com.apple.NSXPCConnection.m-user.com.apple.CoreAuthentication.daemon (Thread 3)Queue : com.apple.NSXPCConnection.m-user.com.apple.CoreAuthentication.daemon (serial)
...
Od TouchID jest wykorzystanie sprzętu urządzenie do odczytu odcisk palca i porównać go do druku przechowywane na chipie myślę, że musi ograniczyć dostęp do jakiegokolwiek innego sprzętu, urządzeń, gdy proces jest wykonywany.
Z twojego doświadczenia i aplikacji testowej po prostu wyrzuciłem razem, to wydaje się być prawdą. Otworzyłem kamerę za pomocą UIImagePickerController i gdy otworzyłem, nazwałem laContext evaluatePolicy: ... i wstrzymało przechwytywanie kamery.
Tak w skrócie, jeśli używasz walidacji TouchID:
- Twój proces jest nadal aktywna aplikacja, ale nazwali z procesu
- Apple jest ograniczanie dostępu do Twojego sprzętu na czas trwania
Podejrzewam, że Apple naprawdę przejmuje aplikację po wyświetleniu ekranu Touch ID. Wiem, że moja aplikacja nie ma metod rotacji i wiem też, że podczas sprawdzania aplikacji za pomocą inspektora wizualnego, takiego jak Reveal.app, ekran Touch ID nie jest nawet częścią hierarchii widoku. Mam nadzieję, że to pomoże ... –
Wow, nie zdawałem sobie sprawy, że istnieje coś takiego jak aplikacja Reveal. Wydaje się przydatne. – Randomblue
To jest niesamowity produkt. Wiele z tego, co robi, można teraz zrobić w Xcode, ale nie na urządzeniu, a jeśli przechwytujesz wideo lub używasz Touch ID, potrzebujesz prawdziwego urządzenia. –