はじめに
業務で生体認証系のパッケージでlocal_authを触る機会があり、セキュリティの観点からiOSの生体認証の処理が失敗したらパスコードを入力できないようにしたかったので実装しました。
ドキュメントに方法が記述されておらず、私が少しハマったため他の人が困らないように、と私のために備忘録として残しておこうと思います。
結論
生体認証の処理を実行時、連続で失敗すると『パスコードを入力する』ボタンが表示されますが、IOSAuthMessages
クラスのlocalizedFallbackTitle
プロパティを空文字にすることで『パスコードを入力する』を表示しないようにすることができます。
あくまで2023年10月時点での情報のため、パッケージのアップデートによる破壊的変更や、Flutterのバージョンによって実装方法が変わる可能性がありますので参考程度にしていただけたらと思います🙇♂️
執筆時の環境
- Flutter3.13.2
- local_auth2.1.7
実装方法
今回作るもの
実装方法
『パスコードを入力する』ボタンを消すための記事のため、local_authの詳しい実装についてはここでは触れないです。
詳しく知りたい方はlocal_authのドキュメントをご覧下さい。
結論でも書きましたが、IOSAuthMessages
クラスのlocalizedFallbackTitle
プロパティを空文字にすることで『パスコードを入力する』を表示しないようにすることができます。
Future<void> authenticate() async {
final auth = LocalAuthentication();
await auth.authenticate(
//localizedReasonはrequiredになっているので仮で空文字を入れています。
localizedReason: '',
authMessages: [
const IOSAuthMessages(
// localizedFallbackTitleを空文字にすることでパスコードを入力するを消すことができます。
localizedFallbackTitle: '',
),
],
options: const AuthenticationOptions(
//生体認証機能を提供するにはbiometricOnlyをtrueにしてください
biometricOnly: true,
),
);
}
参考にしたサイト