私が言及していることに慣れるための本当に良い方法は、Apple が提供したこのプロジェクトを使用することです: Using Touch ID with Keychain and LocalAuthentication
ユーザーに Touch ID 認証を求める方法は 2 つあります。それぞれに長所と短所があります。
-[LAContext evaluatePolicy:localizedReason:reply:]
.
これにより、Touch ID 認証のみをユーザーに要求するようにシステムに求めることができます (正しく設定されている場合)。ここまたは他の場所で繰り返し失敗したためにユーザーがロックアウトされた場合、Touch ID の使用を再度ロック解除する方法としてパスコードを入力するように求められます (私が知る限り)。呼び出しの最初の目的はevaluatePolicy:localizedReason:reply:
、ユーザーに Touch ID で認証してもらうことだったので、引き続きユーザーに認証を求めます。
このアプローチのボーナスは、呼び出しから返されるエラーが、何が起こったのか (ユーザーのキャンセルと失敗) についてより説明的であることです。
- によって保護されたキーチェーンに何かを保存します
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
このオプションにより、興味のあるエクスペリエンスが得られる場合があります。この属性を使用してキーチェーンに何かを保存した後、キーチェーンからコピーしようとすると、より使い慣れた Touch ID プロンプトが表示され、ユーザーは必要に応じてパスコードを入力できます (ただし、 iOS 8.3 Beta で気づいたのですが、最初の試行でプロンプトに「パスコードを入力」オプションが表示されません。
このアプローチの欠点は、ユーザーがプロセスを終了した方法 (何らかの方法で失敗したか、キャンセルを押しただけか) に関係なく、常に失敗エラーが発生することです。