Paul Cezanne に同意します。TouchID プロセスがアクティブな間はキャプチャを実行できないと思います。ドキュメントにもヘッダー ファイルにも特定の情報はありませんが、いくつかのテストを通じて、何が起こっているかを確認できます。
まず、TouchID プロンプトがプロセスの外で実行されています。
1. デバイスのデバッガーで TouchID 対応アプリを実行します。
2. アプリを取得して、TouchID プロンプトを表示します。
3. Xcode で、アプリを一時停止します。
通常、アプリはデバイス上でフリーズしますが、この場合でも、指紋またはキャンセル ボタンを使用してダイアログを閉じることができます。TouchID プロンプトを閉じると、予想どおりアプリが一時停止します。
evaluatePolicy コールバックにブレークポイントを設定します。指紋で TouchID を受け入れると、ブロックが 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)
...
TouchID はデバイス ハードウェアを利用して拇印を読み取り、チップに保存されているプリントと比較するため、プロセスの実行中は他のデバイス ハードウェアへのアクセスを制限する必要があると思います。
あなたの経験と私がまとめたテストアプリから、これは本当のようです. UIImagePickerController を使用してカメラを開き、開いている間に laContext evaluatePolicy:... を呼び出し、カメラのキャプチャを一時停止しました。
つまり、TouchID 検証を使用している場合の要約:
- プロセスはまだアクティブなアプリですが、プロセスから呼び出しています
- Apple はその間、デバイス ハードウェアへのアクセスを制限しています