1

Я пытался реализовать отпечаткам плагин от https://github.com/smstuebe/xamarin-fingerprintXamarin.Forms Plugin.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; 
     } 
    } 
} 

ли кто-нибудь знает, что может быть неправильным? Поскольку он работает на устройствах iOS без какой-либо DependencyService и т. Д., Я могу только представить, что это имеет какое-то отношение к Android.

+0

Вы установили правильное разрешение? Также вы тестируете это на эмуляторе? Вы выполнили инструкции [здесь] (https://github.com/smstuebe/xamarin-fingerprint#android-1)? –

ответ

2

Я предполагаю, что вы используете < = 1.2, потому что IsAvailable не доступен в новой версии.

Причины отсутствия в вашей версии может быть:

  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/ пункт Изменения -> Ломать для получения дополнительной информации.

BTW: вам не нужна конкретная реализация на платформе. Плагин обрабатывает его сам по себе. Вы можете получить доступ к CrossFingerprint.Current непосредственно в своем основном коде.

BTW2: Вы, возможно, придется обновить IDE и NuGet до самой последней версии, потому что я перешел на .netstandard уже :)

+0

Очень красивый плагин. Ждем его очень скоро. Спасибо за вашу работу. – hvaughan3