You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Xamarin Forms安卓端添加Face ID身份验证功能

Xamarin Forms实现Face ID身份验证方案

核心实现逻辑

通过Xamarin Forms依赖服务(DependencyService)分别封装各平台原生生物识别API,iOS端调用系统LocalAuthentication框架实现Face ID调用与校验。

步骤1:共享项目中定义服务接口

public interface IBiometricAuthService
{
    // 判断当前设备是否支持Face ID
    bool IsFaceIdSupported();
    // 唤起身份验证,reason为弹出提示中展示的验证理由
    Task<bool> AuthenticateAsync(string reason);
}

步骤2:iOS平台实现服务

  1. 先在iOS项目的Info.plist中添加Face ID权限说明,否则调用时应用会直接崩溃:
    打开Info.plist的源码视图,添加如下配置:
    <key>NSFaceIDUsageDescription</key>
    <string>需要使用Face ID验证您的身份,保障账号安全</string>
    
  2. 实现iOS端的验证服务:
    [assembly: Dependency(typeof(BiometricAuthService_iOS))]
    namespace YourAppNamespace.iOS
    {
        public class BiometricAuthService_iOS : IBiometricAuthService
        {
            private LAContext _context;
            
            public bool IsFaceIdSupported()
            {
                _context = new LAContext();
                NSError error;
                // 先判断设备是否支持生物识别
                if (_context.CanEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, out error))
                {
                    // iOS 11+才支持Face ID判断
                    if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
                    {
                        return _context.BiometryType == LABiometryType.FaceId;
                    }
                }
                return false;
            }
            
            public async Task<bool> AuthenticateAsync(string reason)
            {
                _context = new LAContext();
                NSError error;
                // 先判断是否可以进行生物验证
                if (!_context.CanEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, out error))
                {
                    return false;
                }
                
                var tcs = new TaskCompletionSource<bool>();
                _context.EvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, reason, (success, evaluateError) =>
                {
                    tcs.SetResult(success);
                });
                return await tcs.Task;
            }
        }
    }
    

步骤3:共享层调用示例

// 从依赖服务中获取实例
var authService = DependencyService.Get<IBiometricAuthService>();
if (authService.IsFaceIdSupported())
{
    bool isAuthenticated = await authService.AuthenticateAsync("请扫描面部完成验证");
    if (isAuthenticated)
    {
        // 验证成功逻辑,比如跳转主页、解锁功能等
    }
    else
    {
        // 验证失败逻辑,比如提示验证失败、引导使用密码登录等
    }
}
else
{
    // 设备不支持Face ID,走其他验证逻辑比如密码、指纹验证
}

注意事项

  • 该实现仅兼容iOS 11及以上版本的Face ID设备,低于系统版本或无Face ID的设备会自动返回不支持,可自行适配Touch ID逻辑
  • 若用户首次调用时拒绝了Face ID权限,后续调用IsFaceIdSupported会直接返回false,可自行添加引导用户前往系统设置开启权限的逻辑
  • 若需要同时兼容安卓端面部识别,可在安卓项目中调用原生BiometricManagerAPI实现对应服务即可

内容的提问来源于stack exchange,提问作者Zubair Munir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:30:04