MASA MAUI Plugin (五)Android 指纹识别

本文介绍了如何在MAUI Blazor项目中利用MASA团队的实验性项目,实现Android设备的指纹识别功能。通过检查设备资格、扫描指纹、响应身份验证回调,以及测试流程,展示了在API 23 (Android 6.0)及更高版本中使用FingerprintManager API进行指纹验证的步骤。项目以独立的NuGet包形式提供,方便开发者测试和使用。
摘要由CSDN通过智能技术生成

背景

MAUI的出现,赋予了广大.Net开发者开发多平台应用的能力,MAUI 是Xamarin.Forms演变而来,但是相比Xamarin性能更好,可扩展性更强,结构更简单。但是MAUI对于平台相关的实现并不完整。所以MASA团队开展了一个实验性项目,意在对微软MAUI的补充和扩展,

项目地址https://github.com/BlazorComponent/MASA.Blazor/tree/main/src/Masa.Blazor.Maui.Plugin

每个功能都有单独的demo演示项目,考虑到app安装文件体积(虽然MAUI已经集成裁剪功能,但是该功能对于代码本身有影响),届时每一个功能都会以单独的nuget包的形式提供,方便测试,现在项目才刚刚开始,但是相信很快就会有可以交付的内容啦。

前言

本系列文章面向移动开发小白,从零开始进行平台相关功能开发,演示如何参考平台的官方文档使用MAUI技术来开发相应功能。

介绍

API 级别 23 (Android 6.0) 设备上引入指纹扫描仪为应用程序提供了传统的用户名/密码用户身份验证的替代方法。 相较于用户名和密码,采用指纹对用户进行身份验证使应用程序安全性的实现更具隐私性,之后 API-28(Android9.0) 中添加了生物识别身份验证Biometric,增加了人脸认证相关功能。我们今天讨论的只涉及指纹认证,考虑到兼容性问题采用API - 23 (Android 6.0) 版本提供的 FingerprintManager API,经过测试可以在Android 6.0 -11.0中正常工作,如果您需要人脸验证相关功能请参考链接: androidx.biometric,实现细节与本文类似。

思路

我们先看一下Android 的指纹验证方法核心的指纹管理类FingerprintManagerCompat ,fingerprintManager是通过FingerprintManagerCompat.from(Context context)来创建的。

JAVA代码
FingerprintManagerCompat fingerprintManager= FingerprintManagerCompat.from(Context context);

1、检查资格:

1、需要检查设备是否支持指纹。
2、需要检查设备是否受保护 - 用户必须使用屏幕锁保护设备。 如果用户未使用屏幕锁保护设备,但是当前应用程序对于安全性要求很高,则应通知用户必须配置屏幕锁。
3、需要检查用户是否已经注册指纹 - 用户必须至少有一个指纹已注册到操作系统。 此权限检查应在每次尝试进行身份验证之前进行,因为用户有可能随时取消指纹
在MAUI blazor项目的Platforms->Android文件夹添加MasaMauiFingerprintService.cs 类,添加如下两个方法

       public static class MasaMauiFingerprintService
    {
   
        private static FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(Android.App.Application.Context);

        /// <summary>
        /// Check eligibility
        /// </summary>
        /// <returns>error message</returns>
        public static async Task<string> CheckingEligibility()
        {
   
            // 1、Check if your hardware supports it
            if (!fingerprintManager.IsHardwareDetected)
            {
   
                return "IsHardwareDetected";
            }

            // 2、Check if the user is using a screen lock
            // KeyguardManager: Lock screen management class
            var keyguardManager = Android.App.Application.Context.GetSystemService(Context.KeyguardService) as KeyguardManager;
            if (!keyguardManager.IsKeyguardSecure)
            {
   
                return "The device does not have a screen lock set";
            }

            // 3、Check if at least one fingerprint is registered
            if (!fingerprintManager.HasEnrolledFingerprints)
            {
   
                return "The device does not have a fingerprint set, please set at least one fingerprint";
            }

            var granted = await CheckAndRequestFingerprintPermission();
            if (!granted)
            {
   
                return "Permissions not granted";
            }
            return string.Empty;
        }

        /// <summary>
        /// Permission check
        /// </summary>
        /// <returns></returns>
        private static async Task<bool> CheckAndRequestFingerprintPermission()
        {
   
            var status = await Permissions.CheckStatusAsync<AndroidFingerprintPermissions>(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值