Xamarin Let's Build - 생체 인식 지원

5788 단어 xamarinforms
생체 인식은 휴대폰에서 흔히 볼 수 있는 보안 기능입니다. 지문인식이든 안면인식이든 은행에 로그인하거나 Google/Apple Pay를 사용할 때 표시됩니다. Xamarin.Forms 애플리케이션에 생체 인증을 추가하는 방법을 알아보겠습니다.
  • Getting Started
  • Configuring Android
  • Configuring iOS
  • Implementing the biometric check
  • Testing
  • Resources

  • 시작하기



    응용 프로그램에 생체 인식 지원을 추가하기 전에 이 기능이 사용자 장치의 OS에 내장된 생체 인식 지원과 함께 작동한다는 점을 이해하는 것이 좋습니다. 이렇게 하면 앱 내에서 지문을 캡처할 수 없습니다. 이렇게 하면 OS에 사용자에게 메시지를 표시하고 인증 여부를 앱에 다시 보고하도록 요청합니다.

    Plugin.Fingerprint NuGet 패키지를 모든 프로젝트에 추가합니다(공유 및 플랫폼별).



    안드로이드 구성



    이것이 제대로 작동하려면 앱의 대상 SDK 버전이 6.0보다 큰지 확인해야 하며 AndroidX 패키지를 사용하도록 Xamarin.Forms 앱을 마이그레이션한 경우 Xamarin.AndroidX를 설치할 필요가 없습니다. .문서에서 제안하는 마이그레이션 NuGet 패키지.

    시작하려면 앱에 지문 액세스 권한이 필요합니다.

    <uses-permission android:name="android.permission.USE_FINGERPRINT" />
    
    




    이제 권한이 설정되었으므로 플러그인은 올바른 활동에 대한 프롬프트를 표시할 수 있도록 작업 중인 활동을 알아야 합니다. Xamarin.Essentials는 새로운 Xamarin 프로젝트의 일부로 번들로 제공되므로 이를 사용하여 현재 작업을 설정합니다(James MontemagnoCurrent Activity Plugin를 계속 사용하는 경우에도 작동함).

    CrossFingerprint.SetCurrentActivityResolver(() => Xamarin.Essentials.Platform.CurrentActivity);
    
    


    현재 활동을 해결하는 데 도움이 되도록 Xamarin.Essentials를 사용하고 있으므로 Xamarin.Essentials를 초기화한 후 활동 확인자가 선언되었는지 확인해야 합니다.

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
    
        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        CrossFingerprint.SetCurrentActivityResolver(() => Xamarin.Essentials.Platform.CurrentActivity);
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        LoadApplication(new App());
    }
    
    


    iOS 구성



    시작하려면 앱에 지문 액세스 권한이 필요합니다.

    <key>NSFaceIDUsageDescription</key>
    <string>Need your face to unlock secrets!</string>
    
    


    Android와 달리 실제로 필요한 전부입니다. 단순한!

    생체 확인 구현



    이제 플랫폼별 프로젝트를 구성했으므로 실제로 생체 인증을 사용하여 사용자가 인증되었는지 여부를 확인할 수 있습니다.

    bool supported = await CrossFingerprint.Current.IsAvailableAsync(true);
    if (supported)
    {
        AuthenticationRequestConfiguration conf = new AuthenticationRequestConfiguration("Access your account", "Access your account");
        var result = await CrossFingerprint.Current.AuthenticateAsync(conf);
    
        if (result.Authenticated)
        {
            await DisplayAlert("Success!", "Authentication successful!", "Ok");
        }
        else
        {
            await DisplayAlert("Sorry!", "Authentication failed!", "Ok");
        }
    }
    else
    {
        await DisplayAlert("Sorry!", "Biometrics are not available on your device", "Ok");
    }
    
    


    해당 샘플에서 몇 가지 일이 발생하므로 핵심 부분 중 일부를 선택해 보겠습니다.

    bool supported = await CrossFingerprint.Current.IsAvailableAsync(true);
    
    


    실행 중인 장치에서 생체 인식이 지원되는지 여부를 알려줍니다. 생체 인식을 활성화하지 않거나 장치가 생체 인식을 지원하지 않는 사용자를 위한 대비책이 필요하다는 점을 항상 기억할 가치가 있습니다. 인증을 사용하기 전에 인증을 사용할 수 있는지 확인하는 것이 가장 좋습니다.

    AuthenticationRequestConfiguration conf = new AuthenticationRequestConfiguration("Access your account", "Access your account");
    var result = await CrossFingerprint.Current.AuthenticateAsync(conf);
    
    


    이렇게 하면 사용자에게 표시되는 프롬프트를 구성한 다음(참고: iOS에서는 제목만 취하고 설명은 무시함) 해당 인증 결과를 반환합니다.

    if (result.Authenticated)
    {
        await DisplayAlert("Authenticated", "Congrats you were authenticated!", "Ok");
    }
    else
    {
        await DisplayAlert("Sorry", "You were not authenticated", "Ok");
    }
    
    


    이것은 확인 결과를 처리할 것입니다. 반환된 Authenticated 값이 true인지 확인하고 원하는 작업을 수행할 수 있습니다. 예를 들어 경고를 표시하고 있습니다. 앱 내의 페이지 또는 그들이 사용자의 신원을 확인하려는 조치를 취하기 전에.

    그러면 다음과 유사한 프롬프트가 표시됩니다.

    테스트



    Android 및 iOS 에뮬레이터 모두에서 생체 인식 인증을 테스트할 수 있습니다. Android에서는 실행 중인 특정 에뮬레이터 내에서 지문을 설정했는지 확인하기만 하면 됩니다.
  • iPhone - 기기 > 기능 > Face ID > 등록됨
  • Android - 설정(…) > Touch the Sensor

  • 자원



    이 게시물here의 코드가 있는 GitHub 리포지토리에 대한 링크를 찾을 수 있습니다.

    좋은 웹페이지 즐겨찾기