こんにちは。開発部第1グループの高橋と申します。
今回、iOSの生体認証ダイアログについて調べたのでまとめを作成しました。
開発環境
- Swift5
- Xcode15.0.1
概要
Local Authentication フレームワークを使って表示する生体認証ダイアログについて調べたことをご紹介します。
Apple Developerのドキュメントにはあまり詳しい情報が無かったため、自分で色々いじってみた内容のまとめになります。
導入方法
Face IDを使用する場合、アプリプロジェクトの TARGETS > Info > Custom iOS Target Properties にPrivacy - Face ID Usage Description
のキーと値を追加してください。
値には、Face IDを利用する目的(利用理由)を記述してください。
生体認証の種類
現在、生体認証の種類(Local Authentication > LAContext > LABiometryType)は以下4つが定義されています。
- none :利用不可(端末が生体認証をサポートしていない)
- Touch ID:指紋認証
- Face ID:顔認証
- Optic ID:虹彩認証
ちなみに、今回私はiPhone端末で使用可能なFace ID/Touch IDのみを対象としたかったので、以下のようなenumを定義して使用しました。
enum BiometryType { case none // 端末の生体認証が利用不可 case touchID case faceID case other // その他(visionOSのopticIDなど) }
※Xcode15から追加されたvisionOSのOptic IDは other
(その他)として扱います
実装にあたり調べたこと
生体認証ダイアログにおいて変更可能な項目
Local Authenticationの生体認証ダイアログでは、以下の3つを変更可能です。
※参考:Local Authentication > LAContext > Customizing authentication prompts
// 1.生体認証実行時に表示される説明 var localizedReason: String // 2.フォールバックボタンのタイトル var localizedFallbackTitle: String? // 3.キャンセルボタンのタイトル var localizedCancelTitle: String?
以下で画像と共に詳しくご説明します。
生体認証実行時に表示される説明
Touch IDでの動作
- 指紋認証ダイアログの上部に表示される
Face IDでの動作
- 顔認証に失敗した後、パスコード入力へ誘導する際に表示
- パスコード入力へ誘導しない場合は表示されない
フォールバックボタンのタイトル
未設定(nil)の時はデフォルトの「パスコードを入力」が表示される
ボタンを非表示にする場合は空文字を設定する(※Face IDのみ)
キャンセルボタンのタイトル
- 未設定(nil)または空文字の時はデフォルトの「キャンセル」が表示される
補足: 変更可否の一覧
- 変更可能な項目
- ①生体認証の説明文
- ②キャンセルボタンの文言
- ③フォールバック時の「パスコードを入力」の文言
- 変更不可の項目
- ④指紋認証のアイコン画像
- ⑤ダイアログのタイトル部分
- ⑥(Face IDのみ)やり直し時のダイアログのメッセージ
まとめ
iOSアプリで生体認証機能を実装する際のご参考になれば幸いです!