Ich stimme Paul Cezanne zu, ich glaube nicht, dass Sie die Erfassung durchführen können, während der TouchID-Prozess aktiv ist. Obwohl ich weder in den Dokumenten noch in den Header-Dateien bestimmte Informationen sehe, können Sie durch einige Tests sehen, was passiert.
Zuerst wird die TouchID-Eingabeaufforderung außerhalb Ihres Prozesses ausgeführt.
1. Führen Sie Ihre TouchID-fähige App auf einem Gerät im Debugger aus.
2. Rufen Sie die App auf, um die TouchID-Eingabeaufforderung anzuzeigen.
3. Pausieren Sie in Xcode die App.
Normalerweise wäre die App auf dem Gerät eingefroren, aber in diesem Fall können Sie den Dialog weiterhin mit Ihrem Fingerabdruck oder der Abbrechen-Schaltfläche schließen. Sobald Sie die TouchID-Eingabeaufforderung schließen, wird die App wie erwartet angehalten.
Legen Sie einen Haltepunkt im Callback von evaluatePolicy fest. Übernehmen Sie TouchID mit Ihrem Fingerabdruck und Sie werden sehen, dass der Block von CoreAuthentication.daemon aufgerufen wird.
-[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)
...
Da TouchID nutzt die Gerätehardware des Fingerabdrucks und vergleichen Sie es mit dem Druck auf dem Chip gespeichert lesen Ich denke, das den Zugriff auf andere Geräte Hardware beschränken muss, während der Prozess ausgeführt wird.
Aus Ihrer Erfahrung und einer Test-App, die ich gerade zusammengeworfen habe, scheint das wahr zu sein. Ich habe die Kamera mit UIImagePickerController geöffnet und während ich geöffnet habe, habe ich laContext evaluatePolicy: ... aufgerufen und die Aufnahme der Kamera angehalten.
Also zusammenfassend, wenn Sie die TouchID Validierung verwenden:
- Ihr Prozess ist immer noch die aktiven App, aber Sie haben aus Ihrem Prozess namens
- Apple Beschränkung des Zugriffs auf die Gerätehardware für die Dauer
Ich vermute, dass Apple die App wirklich übernimmt, wenn der Touch ID-Bildschirm angezeigt wird. Ich weiß, dass meine App keine Rotationsmethoden erhält, und ich weiß auch, dass der Touch ID-Bildschirm nicht einmal Teil der Ansichtshierarchie ist, wenn Sie Ihre App mit einem visuellen Inspector wie Reveal.app untersuchen. Hoffe, das hilft ... –
Wow, ich wusste nicht, Dinge wie Reveal App existiert. Scheint nützlich zu sein. – Randomblue
Es ist ein erstaunliches Produkt. Vieles von dem, was es tut, kann jetzt in Xcode getan werden, aber nicht auf einem Gerät, und wenn Sie Video aufnehmen oder Touch ID verwenden, benötigen Sie ein echtes Gerät. –