首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin.Forms Plugin.Fingerprint

Xamarin.Forms Plugin.Fingerprint
EN

Stack Overflow用户
提问于 2016-11-03 09:33:21
回答 1查看 3.5K关注 0票数 1

我一直在尝试实现来自https://github.com/smstuebe/xamarin-fingerprint的指纹插件

我的想法是,我希望用户能够使用他的指纹,而不是输入代码时,他正在签署的一些工作,他已经做了。

它适用于iOS设备,但当我在安卓设备上试用它时,"CrossFingerprint.Current.IsAvailable“总是返回false。有人知道可能出了什么问题吗?

下面是一些代码:

代码语言:javascript
复制
    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项目中的方法,但是它返回相同的结果:

代码语言:javascript
复制
[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等等,我只能想象它与安卓有关。

EN

回答 1

Stack Overflow用户

发布于 2016-11-03 14:19:19

我假设您使用的是<= 1.2,因为IsAvailable在新版本中不可用。

在您的版本中无法使用的原因可以是:

  1. API不支持访问指纹传感器(三星设备或Android < 6)
  2. 未授予访问指纹传感器的权限
  3. 设备没有传感器
  4. 指纹还没有登记

我已经发布了一个支持三星设备的更新版本。

它还为您提供了更多关于不可用性的原因的信息。

将软件包更新为1.3!

检查可用性

代码语言:javascript
复制
if(await CrossFingerprint.Current.IsAvailableAsync()){
    // ...
}

代码语言:javascript
复制
var avail = await CrossFingerprint.Current.GetAvailabilityAsync();
// avail contains the availability

参见:http://smstuebe.de/2016/10/13/fingerprintv1.3/段落更改->中断以获得更多信息。

顺便说一句:您不需要一个特定于平台的实现。插件自己处理它。您可以在核心代码中直接访问CrossFingerprint.Current

BTW2:您可能必须将您的IDE和NuGet更新为最新版本,因为我已经切换到了.netstandard :)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40398020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档