はじめに、アプリケーションで指紋認証を使用できるように Xamarin.Android プロジェクトを構成する方法について説明します。
- AndroidManifest.xml を更新して、指紋 API で必要なアクセス許可を宣言します。
FingerprintManager
への参照を取得します。- デバイスが指紋スキャンに対応していることを確認します。
アプリケーション マニフェストでアクセス許可を要求する
Android アプリケーションでは、マニフェストで USE_FINGERPRINT
アクセス許可を要求する必要があります。 次のスクリーンショットに、Visual Studio でアプリケーションにこのアクセス許可を追加する方法を示します。
FingerprintManager のインスタンスを取得する
次に、アプリケーションで FingerprintManager
または FingerprintManagerCompat
クラスのインスタンスを取得する必要があります。 Android の以前のバージョンとの互換性を維持するため、Android アプリケーションでは、Android Support v4 NuGet パッケージに含まれている互換性 API を使用する必要があります。 次のスニペットで、オペレーティング システムから適切なオブジェクトを取得する方法を示します。
// Using the Android Support Library v4
FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(context);
// Using API level 23:
FingerprintManager fingerprintManager = context.GetSystemService(Context.FingerprintService) as FingerprintManager;
前のスニペットの context
は任意の Android Android.Content.Context
です。 通常、これは、認証を実行するアクティビティです。
資格の確認
アプリケーションでは、指紋認証を使用できることを確認するために、さまざまなチェックを実行する必要があります。 アプリケーションで資格を確認するために使用される条件は、全部で 5 つあります。
API レベル 23 – 指紋 API では、API レベル 23 以降が必要です。 FingerprintManagerCompat
クラスによって、API レベルのチェックが自動的にラップされます。 このため、Android Support Library v4 と FingerprintManagerCompat
を使用することをお勧めします。これにより、これらのチェックの 1 つが構成されます。
ハードウェア - アプリケーションの初回の起動時に、指紋スキャナーの存在を確認する必要があります。
FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(context);
if (!fingerprintManager.IsHardwareDetected)
{
// Code omitted
}
デバイスがセキュリティで保護されている - デバイスが画面ロックを使用してユーザーによって保護されている必要があります。 デバイスが画面ロックを使用してユーザーによって保護されていないときに、アプリケーションにとってセキュリティが重要である場合は、画面ロックを構成する必要があることをユーザーに通知する必要があります。 次のコード スニペットに、この前提条件を確認する方法を示します。
KeyguardManager keyguardManager = (KeyguardManager) GetSystemService(KeyguardService);
if (!keyguardManager.IsKeyguardSecure)
{
}
登録されている指紋 - 少なくとも 1 つの指紋がユーザーによってオペレーティング システムに登録されている必要があります。 このアクセス許可の確認は、認証が試行されるときに毎回実行される必要があります。
FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(context);
if (!fingerprintManager.HasEnrolledFingerprints)
{
// Can't use fingerprint authentication - notify the user that they need to
// enroll at least one fingerprint with the device.
}
アクセス許可 - アプリケーションでは、アプリケーションが使用される前にユーザーにアクセス許可を要求する必要があります。 Android 5.0 以降では、ユーザーは、アプリをインストールする条件としてアクセス許可を付与します。 Android 6.0 では、実行時にアクセス許可をチェックする新しいアクセス許可モデルが導入されています。 次のコード スニペットは、Android 6.0 でアクセス許可を確認する方法の例です。
// The context is typically a reference to the current activity.
Android.Content.PM.Permission permissionResult = ContextCompat.CheckSelfPermission(context, Manifest.Permission.UseFingerprint);
if (permissionResult == Android.Content.PM.Permission.Granted)
{
// Permission granted - go ahead and start the fingerprint scanner.
}
else
{
// No permission. Go and ask for permissions and don't start the scanner. See
// https://developer.android.com/training/permissions/requesting.html
}
アプリケーションで認証オプションが提供されるたびにこれらの条件をすべて確認することで、ユーザーが確実に最適なユーザーエクスペリエンスを得ることができます。 デバイスまたはオペレーティング システムを変更またはアップグレードすると、指紋認証の可用性に影響を与える可能性があります。 これらのチェックの結果をキャッシュすることを選択した場合は、アップグレード シナリオに対応していることを確認してください。
Android 6.0 でアクセス許可を要求する方法の詳細については、Android のガイドの「実行時にアプリの権限をリクエストする」を参照してください。