أضف مصادقة البصمة إلى التطبيق الخاص بك ، باستخدام BiometricPrompt

مؤلف: Lewis Jackson
تاريخ الخلق: 13 قد 2021
تاريخ التحديث: 1 تموز 2024
Anonim
Biometric Fingerprint Authentication in android studio | How to add fingerprint in android studio
فيديو: Biometric Fingerprint Authentication in android studio | How to add fingerprint in android studio

المحتوى


دعنا نستخدم واجهة برمجة تطبيقات BiometricPrompt لإنشاء تطبيق يتيح للمستخدم تأكيد هويته باستخدام بصمة.

افتح Android Studio وقم بإنشاء مشروع جديد ، باستخدام قالب "نشاط فارغ". عند المطالبة ، قم بتعيين الحد الأدنى من SDK للمشروع الخاص بك على 28 أو أعلى ، حيث سيمنع ذلك تثبيت التطبيق الخاص بك على أي شيء أقدم من Android Pie.

إذا كنت تريد أن تجعل تطبيقك متاحًا لمجموعة واسعة من أجهزة Android ، فأنت بحاجة إلى التحقق من إصدار Android المثبت عليه حاليًا ، ثم التعامل مع المصادقة البيومترية بشكل مختلف ، وفقًا لمستوى واجهة برمجة التطبيقات الخاصة بالجهاز.

أضف مكتبة البيومترية

للبدء ، افتح ملف build.gradle على مستوى الوحدة النمطية ، وأضف أحدث إصدار من مكتبة Biometric كاعتماد على المشروع:

التبعيات {تطبيق androidx.biometric: biometric: 1.0.0-alpha03

أضف إذن USE_BIOMETRIC

تتيح لك واجهة برمجة تطبيقات BiometricPrompt الاستفادة من جميع أساليب المصادقة البيومترية المختلفة التي يدعمها الجهاز ، عبر إذن واحد.

افتح بيان مشروعك ، وأضف الإذن "USE_BIOMETRIC":


قم بإنشاء تخطيط التطبيق الخاص بك

بعد ذلك ، لنقم بإنشاء تخطيط تطبيقنا. سأضيف زرًا واحدًا ، عند النقر عليه ، سيتم تشغيل مربع حوار مصادقة البصمة:

افتح ملف strings.xml لمشروعك ، وأضف مورد سلسلة "المصادقة":

BiometricPromptSample المصادقة مع بصمة

مصادقة هوية المستخدم

الآن ، دعونا نلقي نظرة على كيفية توثيق هوية المستخدم ، باستخدام BiometricPrompt.


إنشاء نسخة سريعة البيومترية

تتضمن فئة BiometricPrompt فئة Builder () مصاحبة ، والتي يمكنك استخدامها لإنشاء مثيل BiometricPrompt وبدء المصادقة:

BiometricPrompt.PromptInfo finalInfo = جديد BiometricPrompt.PromptInfo.Builder ()

عند إنشاء مثيل BiometricPrompt ، ستحتاج إلى تحديد النص الذي يجب أن يظهر في مربع حوار المصادقة ، وتخصيص "الزر السلبي" ، وهو الزر الذي يتيح للمستخدم إلغاء المصادقة.

لتكوين مربع حوار المصادقة ، ستحتاج إلى توفير ما يلي:

  • تعيين العنوان. عنوان موجه مصادقة البصمة. (مطلوب)
  • setSubtitle. العنوان الفرعي لمطابقة مصادقة البصمة. (اختياري)
  • setDescription. وصف إضافي سيتم عرضه في مربع حوار المصادقة. (اختياري)
  • setNegativeButton (النص ، المنفذ ، المستمع). هذا هو تسمية الزر السلبي ، على سبيل المثال "إلغاء" أو "إنهاء". عند تكوين الزر السلبي ، ستحتاج أيضًا إلى توفير مثيل Executor و OnClickListener حتى يتمكن المستخدم من رفض مربع حوار المصادقة.

في وقت كتابة هذا التقرير ، لم يكن من الممكن تخصيص الرمز أو الخطأ المستخدم في مربع حوار المصادقة.

أخيرًا ، ستحتاج إلى استدعاء build (). هذا يعطينا ما يلي:

BiometricPrompt.PromptInfo finalInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle ("Title Title يذهب here") .setSubtitle ("Subtitle يذهب هنا") .setDescription ("This is the description") .setNegativeButtonText ("Cancel") . البناء ()؛

التعامل مع عمليات الاسترجاعات المصادقة

يتم تعيين مثيل BiometricPrompt على مجموعة من أساليب رد اتصال المصادقة التي ستُعلم التطبيق الخاص بك بنتائج عملية المصادقة.

ستحتاج إلى التفاف كل عمليات الاسترجاعات هذه في مثيل فئة BiometricPrompt.AuthenticationCallback:

final BiometricPrompt myBiometricPrompt = جديد BiometricPrompt (نشاط ، newExecutor ، جديد BiometricPrompt.AuthenticationCallback () {

الخطوة التالية هي تطبيق بعض أو كل أساليب رد الاتصال التالية:

1. on المصادقةالسابق ()

تُسمى هذه الطريقة عندما تتم مطابقة بصمة الإصبع بنجاح بأحد بصمات الأصابع المسجلة على الجهاز. في هذا السيناريو ، يتم تمرير كائن AuthenticationResult إلى رد الاتصال onAuthenticationSucceeded وسيقوم تطبيقك بعد ذلك بمهمة استجابة لهذه المصادقة الناجحة.

للمساعدة في الحفاظ على الأمور بسيطة ، سوف يستجيب تطبيقنا من خلال طباعة Logcat على Android Studio:

Override public void onAuthenticationSucceeded (NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (result)؛ Log.d (TAG ، "التعرف على بصمات الأصابع بنجاح") ؛ }

2. onAuthenticationFailed ()

يتم تشغيل هذه الطريقة عند اكتمال الفحص بنجاح ولكن بصمة الإصبع لا تتطابق مع أي من المطبوعات المسجلة على الجهاز. مرة أخرى ، سوف يستجيب تطبيقنا لحدث المصادقة هذا ، عن طريق طباعة ملف على Logcat:

Override public void onAuthenticationFailed () {super.onAuthenticationFailed ()؛ Log.d (TAG ، "بصمة غير معترف بها") ؛ }

3. on المصادقة خطأ

يتم تشغيل رد الاتصال هذا عندما يحدث خطأ غير قابل للاسترداد ولا يمكن إكمال المصادقة بنجاح. على سبيل المثال ، ربما يكون مستشعر اللمس بالجهاز مغطى بالتراب أو الشحم ، ولم يسجل المستخدم أي بصمات على هذا الجهاز ، أو لا تتوفر ذاكرة كافية لإجراء مسح بيولوجي كامل.

إليك الرمز الذي سأستخدمه في تطبيقي:

Override public void onAuthenticationError (int errorCode،NonNull CharSequence errString) {super.onAuthenticationError (errorCode، errString)؛ إذا (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} آخر {Log.d (TAG ، "حدث خطأ غير قابل للاسترداد") ؛ }}

4. on المصادقةالمساعدة

يتم استدعاء أسلوب onAuthenticationHelp كلما حدث خطأ غير فادح ، ويتضمن رمز تعليمات ورمزًا يوفر مزيدًا من المعلومات حول الخطأ.

للمساعدة في الحفاظ على التعليمات البرمجية الخاصة بنا واضحة ، لن أستخدم onAuthenticationHelp في تطبيقنا ، ولكن يبدو أن التنفيذ يبدو كالتالي:

Override public void onAuthenticationHelp (int helpCode، CharSequence helpString) {super.onAuthenticationHelp (helpCode، helpString)؛ biometricCallback.onAuthenticationHelp (helpCode، helpString)؛ }

أخيرًا ، نحتاج إلى استدعاء طريقة المصادقة () لمثيل BiometricPrompt:

myBiometricPrompt.authenticate (promptInfo)؛

تطبيق المصادقة البيومترية لنظام Android Pie

بمجرد الانتهاء من جميع الخطوات المذكورة أعلاه ، يجب أن يبدو نشاطك الرئيسي على النحو التالي:

استيراد androidx.appcompat.app.AppCompatActivity ؛ استيراد androidx.biometric.BiometricPrompt؛ استيراد android.os.Bundle ؛ استيراد java.util.concurrent.Executor ؛ استيراد java.util.concurrent.Executors؛ استيراد androidx.fragment.app.FragmentActivity ؛ استيراد android.util.Log؛ استيراد android.view.View ؛ استيراد androidx.annotation.NonNull؛ توسيع MainActivity من الفئة العامة AppCompatActivity {private static final String TAG = MainActivity.class.getName ()؛ Override محمية void onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState)؛ setContentView (R.layout.activity_main)؛ // إنشاء تجمع مؤشر ترابط مع مؤشر ترابط واحد // Executor newExecutor = Executors.newSingleThreadExecutor ()؛ نشاط FragmentActivity = هذا ؛ // البدء في الاستماع لأحداث المصادقة // final BiometricPrompt myBiometricPrompt = new BiometricPrompt (نشاط ، تنفيذ جديد ، BiometricPrompt.AuthenticationCallback () {Override // onAuthenticationError يسمى عندما يحدث خطأ فادح // public void onAuthenticationError CharSequence errString) {super.onAuthenticationError (errorCode، errString)؛ if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} آخر {// اطبع a إلى Logcat // Log.d (TAG ، "حدث خطأ غير قابل للاسترداد") ؛}} يتم استدعاء // onAuthenticationSucceeded عندما تتم مطابقة البصمة بنجاح // @ Oververide public void onAuthenticationSucceeded (NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (result)؛ // Print a to Logcat // Log.d (TAG، "Fingerprint تم التعرف عليه بنجاح ")؛} / / onAuthenticationFailed يسمى عندما لا تتطابق البصمة مع // @ Oververide public void onAuthenticationFailed () {super.onAuthenticationFailed ()؛ // Print a to Log cat // Log.d (TAG ، "بصمة غير معترف بها") ؛ }}) ؛ // إنشاء مثيل BiometricPrompt // final BiometricPrompt.PromptInfo مطالبة: = جديد BiometricPrompt.PromptInfo.Builder () // إضافة بعض النص إلى مربع الحوار // .setTitle ("" نص العنوان يذهب هنا ") .setSubtitle (" Subtitle يذهب هنا "). ) .setDescription ("This is the description") .setNegativeButtonText ("Cancel") // Build the dialog // .build ()؛ / / قم بتعيين onClickListener على زر "المصادقة" للتطبيق // findViewById (R.id.launchAuthentication) .setOnClickListener (طريقة عرض جديدة. OnClickListener () {Override public void onClick (View v) {myBiometricPrompt.authenticate) })؛ }}

اختبار المشروع الخاص بك

الآن لقد أنشأت مشروعك ، فقد حان الوقت لوضعه قيد الاختبار ومعرفة ما إذا كان يضيف بالفعل مصادقة بصمات الأصابع إلى تطبيقك!

لتشغيل هذا المشروع ، ستحتاج إلى هاتف ذكي حقيقي أو جهاز لوحي يعمل بنظام Android Pie ، أو جهاز Android الظاهري (AVD) يستخدم معاينة Android P أو أعلى.

يجب أيضًا تسجيل بصمة واحدة على الأقل على جهازك. إذا كنت تستخدم جهاز Android فعليًا ، فقم بما يلي:

  • قم بتأمين قفل الشاشة الخاص بك باستخدام رمز PIN أو كلمة مرور أو نقش ، إذا لم تكن قد قمت بالفعل (عن طريق الانتقال إلى "الإعدادات> قفل الشاشة والأمان> نوع قفل الشاشة> النمط / الرقم السري / كلمة المرور" ثم اتبع الإرشادات التي تظهر على الشاشة).
  • قم بتشغيل تطبيق "الإعدادات" على جهازك.
  • حدد "قفل الشاشة والأمان".
  • حدد "ماسحة البصمات".
  • اتبع الإرشادات لتسجيل بصمة أو أكثر.

لا تحتوي أجهزة Android الافتراضية على جهاز استشعار يعمل باللمس الفعلي ، لذلك ستحتاج إلى محاكاة حدث touch:

  • قم بتشغيل AVD ، إذا لم تكن بالفعل.
  • إلى جانب AVD ، سترى شريطًا من الأزرار. ابحث عن زر "المزيد" ثلاثي النقاط (حيث يتم وضع المؤشر في لقطة الشاشة التالية) وقم بنقرة واحدة. هذا تطلق نافذة "الضوابط الموسعة".
  • في نافذة Extended Controls (عناصر التحكم الموسعة) ، حدد "Fingerprint". يفتح هذا مجموعة من عناصر التحكم ، حيث يمكنك محاكاة أحداث اللمس المختلفة.
  • افتح القائمة المنسدلة ، واختر بصمة الأصابع التي تريد تسجيلها على هذا الجهاز ؛ أنا أستخدم "Finger 1."
  • الآن ، دعنا نحول انتباهنا إلى الجهاز المضاهاة. قم بتشغيل تطبيق AVD الخاص بـ "الإعدادات" ، واختر "الأمان والموقع".
  • إذا لم تكن قد قمت بالفعل بإعداد رمز PIN أو كلمة مرور أو نقش ، فحدد "قفل الشاشة" واتبع الإرشادات التي تظهر على الشاشة لتأمين قفل الشاشة ، ثم انتقل مرة أخرى إلى شاشة "الإعدادات> الأمان والموقع" الرئيسية.
  • حدد "Fingerprint" ، ثم "Add finger finger".
  • سيُطلب منك الآن الضغط على إصبعك إلى مستشعر اللمس. بدلاً من ذلك ، استمر في النقر فوق "المس المستشعر" حتى ترى "بصمة المضافة".

  • انقر فوق "تم".
  • إذا كنت ترغب في تسجيل بصمات إضافية ، فعليك شطف وتكرار الخطوات المذكورة أعلاه.

بمجرد تسجيل بصمة واحدة على الأقل ، تكون جاهزًا لوضع طلبك قيد الاختبار. سأختبر كيف يتعامل تطبيقنا مع ثلاثة سيناريوهات مختلفة:

  • يحاول المستخدم المصادقة باستخدام بصمة مسجلة.
  • يحاول المستخدم المصادقة باستخدام بصمة غير مسجلة على هذا الجهاز.
  • يحاول المستخدم المصادقة باستخدام بصمات الأصابع غير المسجلة ، عدة مرات وبتتابع سريع.

دعونا نحاول المصادقة باستخدام بصمة الإصبع التي سجلناها للتو على جهازنا:

  • تأكد من أنك تشاهد Logcat Monitor في Android Studio ، لأن هذا هو المكان الذي ستظهر فيه مختلف تطبيقاتك.

  • تثبيت التطبيق الخاص بك على جهاز الاختبار.
  • اضغط على زر "المصادقة باستخدام بصمة الإصبع" للتطبيق. سوف يظهر مربع حوار مصادقة البصمة.
  • إذا كنت تستخدم جهازًا فعليًا ، فاضغط مع الاستمرار بإصبعك على مستشعر اللمس بالجهاز. إذا كنت تستخدم AVD ، فاستخدم زر "المس المستشعر" لمحاكاة حدث اللمس.
  • تحقق مراقب Logcat. إذا نجحت المصادقة ، فسترى ما يلي: "التعرف على بصمات الأصابع بنجاح"

بعد ذلك ، دعونا نرى ما يحدث إذا حاولنا المصادقة باستخدام بصمة غير مسجلة على هذا الجهاز:

  • انقر على زر "المصادقة باستخدام بصمة" للتطبيق مرة أخرى.
  • إذا كنت تستخدم AVD ، فاستخدم "عناصر التحكم الموسعة" لتحديد بصمة ليس مسجل على هذا الجهاز ؛ أنا أستخدم "Finger 2." أعط زر "المس المستشعر" بنقرة واحدة.
  • إذا كنت تستخدم هاتفًا ذكيًا أو جهازًا لوحيًا فعليًا على Android ، فاضغط مع الاستمرار على إصبعك على مستشعر اللمس بالجهاز - تأكد من أنك تستخدم أصبعًا غير مسجل على هذا الجهاز!
  • تحقق من Android Studio’s Logcat ، يجب أن يعرض الآن "بصمة غير معترف بها".

كما ذكرنا سابقًا ، فإن واجهة برمجة تطبيقات BiometricPrompt تتعامل تلقائيًا مع محاولات المصادقة الفاشلة المفرطة. لاختبار هذه الوظيفة:

  • اضغط على زر "المصادقة باستخدام بصمة الإصبع" في تطبيقك.
  • محاولة المصادقة عدة مرات في تتابع سريع ، وذلك باستخدام بصمة غير مسجلة.
  • بعد عدة محاولات ، يجب إغلاق مربع الحوار تلقائيًا. تحقق من سجل Android Studio ، وستلاحظ ما يلي: "حدث خطأ غير قابل للاسترداد."

يمكنك تنزيل التطبيق الكامل من GitHub.

تغليف

في هذه المقالة ، استكشفنا BiometricPrompt API الجديد لـ Android Pie ، والذي يتيح لك إضافة مصادقة بصمات الأصابع إلى تطبيقك بسهولة. هل تعتقد أن BiometricPrompt يمثل تحسينًا لطرق التحقق من بصمات الأصابع السابقة لنظام Android؟ اسمحوا لنا أن نعرف في التعليقات أدناه!

عندما كان موسم العطلات على قدم وساق ، شاركت Google في إعلان محبوب للغاية من بطولة Macaulay Culkin ، حيث أعاد دوره كفين ماكالستر من فيلم Home Alone الأصلي.شاركت Google اليوم تكملة لهذا الإعلان ، وهذه ا...

> ما هو مساعد Google وما المنتجات التي تستخدمها؟بعد أن اعتمدت Google مسبقًا على الوظائف الإضافية لـ IFTTT ، قدمت Google مؤخرًا التوافق الأصلي للعثور على هاتفك من خلال أحدث تحديثات برنامج Home. يمكن...

مشاركات جديدة