احراز هویت با اثر انگشت در زامارین

پاسخ به احراز هویت CallBackها

در زامارین اسکنر اثر انگشت در thread مربوط به خود در پس زمینه اجرا می شود و هنگامی که به پایان می رسد نتیجه اسکن را با فراخوانی متد FingerprintManager گزارش می کند. AuthenticationCallback در thread مربوط به UI است. اپلیکیشن اندروید باید کنترل خود را ایجاد کند تا این کلاس انتزاعی توسعه داده شود، تمامی روش ها در زیر اجرا شده اند:
1- (OnAuthenticationError(int errorCode, ICharSequence errString: زمانی که خطای غیرقابل قبولی وجود دارد صدا می شود. این روش چیزی بیشتر از یک اپلیکیشن یا کاربری که بتواند شرایط را تصحیح کند نیست به جز امکان زمانی که امکان سعی دوباره وجود دارد.
2- ()OnAuthenticationFailed: این روش زمانی فراخوانی می شود که اثر انگشت تشخیص داده شده است اما توسط دستگاه شناخته نمی شود.
3- (OnAuthenticationHelp(int helpMsgId, ICharSequence helpString: زمانی که خطای غیرقابل قبولی وجود دارد صدا زده می شود. مثلا زمانی که انگشت به صورت خیلی سریع روی اسکنر زده می شود.
4- (OnAuthenticationSucceeded(FingerprintManagerCompati.AuthenticationResult result: این متد زمانی استفاده می شود که اثر انگشت تشخیص داده می شود.
اگر CryptoObject در زامارین زمان تایید هویت استفاده شود، پیشنهاد می شود از Cipher صدا زده شود. DoFinal در OnAuthenticationSuccessful. اگر cipher اشتباه باشد یا اشتباها مقدار دهی اولیه شده باشد، DoFinal اکسپشن های رخ داده را throw می کند. با نشان دادن نتیجه اسکن اثر انگشت ممکن است نتایج خارج از برنامه دستکاری شود.

نمونه ای از هندل کردن احراز هویت callback

کد زیر نمونه ای از پیاده سازی FingerprintManager.AuthenticationCallback در زامارین است:

OnAuthenticationSucceeded بررسی می شود اگر Cipher در FingerprintManager ارائه شد سپس Authentication فراخوانی شود. این Cipher محصور شده آن را به حالت اصلی خود برمی گرداند. اگر مشکلی در Cipher بود DoFinal اکسپشن را throw می کند و تلاش برای احراز هویت باید شکست خورده در نظر گرفته شود.
Callbackهای OnAuthenticationError و OnAuthenticationHelp هر کدام با دریافت integer نشان می دهند که مشکل چیست. در ادامه در مورد کمک های ممکن و خطاها توضیح داده می شود. هر دو Callbackهای هدف مشترکی برای اطلاع دادن به اپلیکیشن در مورد fail شدن احراز هویت دارند اگرچه شدت آن با هم تفاوت دارد. OnAuthenticationHelp خطای بازیابی کاربر می باشد مانند کشیدن سریع اثر انگشت. OnAuthenticationError اغلب خطای سمت سرور است مانند اسکن خراب شده اثر انگشت.
باید توجه شود که OnAuthenticationError زمانی که اسکن اثر انگشت با پیام CancellationSignal.Cancel() کنسل شود فراخوانی می شود. پارامتر errMsgId دارای 5 مقدار است(FingerprintState.ErrorCanceled). بسته به نوع درخواست پیاده سازی AuthenticationCallbacks ممکن است برای رفع آن رفتار متفاوتی نسبت به دیگر خطاها داشته باشد.
OnAuthenticationFailed زمانی فراخوانی می شود که اثر انگشت درست اسکن شده باشد اما هیچ اثر انگشت ثبت شده ای با دستگاه مطابق نباشد.

راهنمای کدها و شناسه های پیام های خطا در زامارین

لیست و توضیحات خطاهای کدها و راهنمای کدها ممکن است در مقالات sdk اندروید مربوط به کلاس FingerprintManager یافت شود. Xamarin.Android مقادیر enum در Android.Hardware.Fingerprints.FingerprintState را نشان می دهد:

کد مقدار توضیحات
AcquiredGood 0 تصویر بدست آمده خوب بود
AcquiredImagerDirty 3 تصویر اثر انگشت noise زیادی ناشی از وجود لکه روی سنسور دارد. به طور مثال بعد از چندین AcquiredInsufficient یا یافتن لکه واقعی بر روی سنسور بازگرداندن این منطقی است. انتظار می رود با بازگرداندن این مورد کاربر سنسور خود را تمیز کند.
AcquiredInsufficient 2 تصویر اثر انگشت دارای noise زیادی برای پردازش و یافتن وضعیت باشد یا احتمال کثیف بودن سنسور وجود دارد.
AcquiredPartial 1 فقط یک بخش از تصویر اثر انگشت تشخیص داده می شود. هنگام ثبت نام، کاربر باید بر روی اینکه چه اتفاقی باید بیفتد تا مشکلات حل شود آگاه باشد برای مثال انگشت روی سنسور فشار داده شود
AcquiredTooFast 5 در اثر حرکت سریع تصویر اثر انگشت ناقص باشد. زمانی برای سنسورهای آرایه ای خطی مناسبتر است که این اتفاق بیافتد اگر انگشت در زمان مناسب حرکت داده می شد. باید از کاربر خواسته شود تا حرکت انگشتش آرام باشد یا انگشت را برای مدتی روی سنسور نگه دارد.
AcquiredToSlow 4 تصویر اثر انگشت در اثر عدم حرکت غیرقابل خواندن باشد
ErrorCanceled 5 عملیات در اثر در دسترس نبودن اسکن اثر انگشت کنسل شود. برای مثال ممکن است زمانی این اتفاق رخ دهد که کاربر تغییر کرده باشد، دستگاه قفل باشد یا عملیاتی در حال اجرا باشد یا آن را غیرفعال کرده باشد.
ErrorHwUnavailable 1 سخت افزار در دسترس نباشد. بعدا مجدد تلاش نمایید.
ErrorLockout 7 عملیات به دلیل قفل شدن Api در اثر تلاش های زیاد کنسل شده باشد.
ErrorNoSpace 4 این وضعیت خطا در اثر عملیاتی مانند ثبت نام باز می گردد. به دلیل نبود فضای کافی عملیات تکمیل نشود.
ErrorTimeout 3 زمانی که عملیات جاری زمان زیادی برای اجرا بگیرد این وضعیت خطا باز می گردد.مقصود این است که از برنامه هایی که در انتظار برنامه های نامحدود اثر انگشت بودند جلوگیری شود. timeout یک پلتفرم و یک سنسور خاص است اما به طور کل در حدود 30 ثانیه است
ErrorUnableToProcess 2 این وضعیت خطا زمانی که سنسور نمی تواند تصویر جاری را پردازش کند برمی گردد

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

7 + 2 =