internal static async Task <FingerprintAuthenticationResult> AuthenticateNoDialogAsync(CancellationToken cancellationToken, FingerprintAuthenticationCallback callback)
        {
            var cancellationSignal = new CancellationSignal();

            cancellationToken.Register(() => cancellationSignal.Cancel());

            CrossFingerprint.GetService().Authenticate(null, cancellationSignal, FingerprintAuthenticationFlags.None, callback, null);

            return(await callback.GetTask());
        }
        public async Task <FingerprintAuthenticationResult> AuthenticateAsync(string reason, CancellationToken cancellationToken)
        {
            if (!IsAvailable)
            {
                return(new FingerprintAuthenticationResult {
                    Status = FingerprintAuthenticationResultStatus.NotAvailable
                });
            }

            if (CrossFingerprint.DialogEnabled)
            {
                var fragment = CrossFingerprint.CreateDialogFragment();
                return(await fragment.ShowAsync(reason, cancellationToken));
            }

            return(await AuthenticateNoDialogAsync(cancellationToken, new FingerprintAuthenticationCallback()));
        }