くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Androidx の認証用ライブラリ, biometric を使ってみた。

重要な情報にユーザーがアクセスする前には生体認証なりを挟みたいことがよくあると思います。

そこで、今回rc01がリリースされたばかりの biometricを使って少し遊んでみました。ので、その記録を書いてみたいと思います。

実行結果

以下のように指紋認証等利用することできます。 詳細な実行結果も取得できるようでしたが、今回はそこには触れてません。

f:id:kuxumarin:20191010230519p:plain

ライブラリの取得元

implementation "androidx.biometric:biometric:1.0.0-rc01"

使い方

実際のところリファレンスを見れば全部書いてあるのでチラ見程度にみてくださいな。

developer.android.com

実際に使うときにはデバイスのOSバージョンや端末が生体認証に対応してるかなど色々コードは増えますが、よく使いそうな部分だけ書いておきます。

val prompt = BiometricPrompt(this,
    Executor { command ->
        command.run()
    },
    object : BiometricPrompt.AuthenticationCallback() {
        override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
            super.onAuthenticationSucceeded(result)
            Toast.makeText(applicationContext, "認証に成功しました", Toast.LENGTH_SHORT).show()
        }
        override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
            super.onAuthenticationError(errorCode, errString)
            Toast.makeText(applicationContext, "エラー", Toast.LENGTH_SHORT).show()
        }
        override fun onAuthenticationFailed() {
            super.onAuthenticationFailed()
            Toast.makeText(applicationContext, "失敗", Toast.LENGTH_SHORT).show()
        }
    })
val promptInfo =
    BiometricPrompt.PromptInfo
        .Builder()
        .setTitle("寿司を書います")
        .setSubtitle("回転寿司 函館 花まる 銀座店")
        .setDescription("サーモン: 800円 1つ 鮪: 400円 1つ")
        .setNegativeButtonText("手に入れる")
        .build()
prompt.authenticate(promptInfo)