1

https://github.com/smstuebe/xamarin-fingerprintから指紋プラグインを実装しようとしています

アイデアは、ユーザーが行った作業に署名するときに、コードを入力する代わりに指紋を使用できるようにすることです。

iOS デバイスでは機能していますが、Android デバイスで試してみると、「CrossFingerprint.Current.IsAvailable」は常に false を返します。何が間違っている可能性があるか知っている人はいますか?

コードの一部を次に示します。

    public class FingerprintAuthentication : IFingerprintAuthentication
    {
        public FingerprintAuthentication()
        {
        }

        public bool IsFingerprintIdentificationAvailable()
        {
            return CrossFingerprint.Current.IsAvailable; //this works directly when using an iOS device, but always returns false when using an Android device
        }
    }

また、DependencyService を実装して Android プロジェクトのメソッドを処理しようとしましたが、同じ結果が返されます。

[assembly: Xamarin.Forms.Dependency(typeof(FingerprintAuthentication))]
namespace AVMobile.Droid.NativeImpl
{
    class FingerprintAuthentication : IFingerprintAuthentication
    {
        public async Task<FingerprintAuthenticationResult> AuthenticateFingerprint(string reason)
        {
            var result = await CrossFingerprint.Current.AuthenticateAsync(reason);
            return result;
        }

        public void DisableFingerprintIdentification()
        {
            Core.Settings.Settings.IsUsingFingerprintIdentification = false;
        }

        public void EnableFingerprintIdentification()
        {
            Core.Settings.Settings.IsUsingFingerprintIdentification = true;
        }

        public bool IsFingerprintIdentificationAvailable()
        {
            var result = CrossFingerprint.Current.IsAvailable;
            //return result;
        }
    }
}

誰が何が間違っているのか手がかりを持っていますか? DependencyService などのない iOS デバイスで動作しているため、Android と関係があるとしか思えません。

4

1 に答える 1

3

IsAvailable新しいバージョンでは利用できないため、<= 1.2 を使用していると思います。

お使いのバージョンで利用できない理由として、次のことが考えられます。

  1. API は指紋センサーへのアクセスをサポートしていません (Samsung デバイスまたは Android < 6)
  2. 指紋センサーへのアクセスが許可されていません
  3. デバイスにセンサーがありません
  4. 指紋が登録されていません

Samsung デバイスをサポートする更新版をリリースしました。

また、使用不可の理由に関する詳細情報も提供します。

パッケージを1.3にアップデート!

空室状況の確認

if(await CrossFingerprint.Current.IsAvailableAsync()){
    // ...
}

また

var avail = await CrossFingerprint.Current.GetAvailabilityAsync();
// avail contains the availability

詳細については、http: //smstuebe.de/2016/10/13/fingerprintv1.3/段落の変更 -> 中断を参照してください。

ところで: プラットフォーム固有の実装は必要ありません。プラグインはそれを単独で処理します。CrossFingerprint.Currentコア コードで直接アクセスできます。

ところで2:私はすでに.netstandardに切り替えたので、IDEとNuGetを最新バージョンに更新する必要があるかもしれません:)

于 2016-11-03T14:19:19.543 に答える