5

AVCaptureDevice画面にライブカメラのプレビューを表示する必要があります。

CAContext( を使用して) Touch ID ビューをカメラ プレビューに重ねるとevaluatePolicy、カメラ プレビューがフリーズします。Touch ID ビューを閉じると、再起動する前にカメラのプレビューが黒い画面で点滅します。

フリーズと黒い画面のフラッシュの両方に問題があります。Touch ID ビューがオーバーレイされた状態でカメラのプレビューを維持するにはどうすればよいですか?

4

2 に答える 2

4

これが可能かどうかはわかりません。Touch ID アラートが画面に表示されると、アプリが制御を失ったように見えます。ダイアログが表示されているときにアプリが回転イベントを取得しないことはわかっています。また、Reveal.app を使用してビュー階層を調べると、自分の階層に Touch ID ビューが表示されないこともわかっています。

カメラをバックグラウンド モードで実行できますか? これでうまくいくかもしれませんが、バックグラウンドでのカメラの使用は許可されていないと思います。

于 2015-04-26T15:19:38.813 に答える
1

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 はその間、デバイス ハードウェアへのアクセスを制限しています

于 2015-05-21T20:42:17.900 に答える