הוסף אימות טביעת אצבע לאפליקציה שלך, באמצעות BiometricPrompt

מְחַבֵּר: Lewis Jackson
תאריך הבריאה: 13 מאי 2021
תאריך עדכון: 1 יולי 2024
Anonim
הוסף אימות טביעת אצבע לאפליקציה שלך, באמצעות BiometricPrompt - אפליקציות
הוסף אימות טביעת אצבע לאפליקציה שלך, באמצעות BiometricPrompt - אפליקציות

תוֹכֶן


בואו להשתמש בממשק ה- API של BiometricPrompt כדי ליצור אפליקציה שתאפשר למשתמש לאשר את זהותו באמצעות טביעת אצבע.

פתח את Android Studio וצור פרוייקט חדש באמצעות התבנית "פעילות ריקה". כשתתבקש, הגדר את ה- SDK המינימלי של הפרויקט שלך ל -28 ומעלה, מכיוון שהדבר ימנע מהתקנת היישום שלך על שום דבר מוקדם יותר מאשר Android Pie.

אם רצית להנגיש את האפליקציה שלך למגוון רחב יותר של מכשירי אנדרואיד, יהיה עליך לבדוק באיזו גרסת אנדרואיד האפליקציה שלך מותקנת כעת, ואז לטפל באימות ביומטרי באופן שונה, תלוי ברמת ה- API של המכשיר.

הוסף את הספרייה הביומטרית

כדי להתחיל, פתח את קובץ build.gradle ברמת המודול שלך והוסף את הגרסה האחרונה של הספרייה הביומטרית כתלות בפרויקט:

תלות {יישום androidx.biometric: biometric: 1.0.0-alpha03

הוסף את ההרשאה USE_BIOMETRIC

ממשק ה- API של BiometricPrompt מאפשר לך להשתמש בכל שיטות האימות הביומטרי השונות בהן תומך המכשיר, באמצעות הרשאה יחידה.

פתח את המניפסט של הפרויקט שלך והוסף את ההרשאה "USE_BIOMETRIC":


צור את פריסת היישום שלך

בשלב הבא, בואו ליצור את פריסת היישום שלנו. אני מתכוון להוסיף כפתור בודד שכאשר הקשה עליו יפעיל את תיבת הדו-שיח לאימות טביעות האצבע:

פתח את קובץ ה- string.xml של הפרוייקט שלך והוסף את משאב המחרוזת "Authority":

מדגם ביומטרי לאמת באמצעות טביעת אצבע

אימות זהות המשתמש

כעת, בואו נראה כיצד לאמת את זהות המשתמש באמצעות BiometricPrompt.


צור מופע בקשה ביומטרית

הכיתה BiometricPrompt כוללת כיתת Builder () Builder (), בה תוכלו להשתמש בכדי ליצור מופע BiometricPrompt ולהתחיל את האימות:

סופי BiometricPrompt.PromptInfo promptInfo = חדש BiometricPrompt.PromptInfo.Builder ()

בבניית מופע ה- BiometricPrompt, יהיה עליכם להגדיר את הטקסט שאמור להופיע בתיבת הדו-שיח לאימות, ולהתאים אישית את "הכפתור השלילי", שהוא הכפתור המאפשר למשתמש לבטל את האימות.

כדי להגדיר את תיבת הדו-שיח לאימות, יהיה עליך לספק את הדברים הבאים:

  • setTitle. כותרת הפקודה לאימות טביעות אצבע. (נדרש)
  • setSubtitle. כותרת המשנה של שורת הפקודה לאימות טביעות אצבע. (אופציונאלי)
  • תיאור. תיאור נוסף שיוצג בדיאלוג האימות שלך. (אופציונאלי)
  • setNegativeButton (טקסט, מבצע, מאזין). זוהי תווית הכפתור השלילי, למשל "ביטול" או "יציאה". בעת קביעת התצורה של הכפתור השלילי, יהיה עליכם לספק מופע מפעיל ו- OnClickListener כך שהמשתמש יוכל לבטל את תיבת הדו-שיח לאימות.

בזמן הכתיבה לא ניתן היה להתאים אישית את הסמל או את השגיאה ששימשה בתיבת הדו-שיח לאימות.

לבסוף תצטרך להתקשר לבנות (). זה נותן לנו את הדברים הבאים:

final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle ("טקסט הכותרת הולך לכאן") .setSubtitle ("כותרת המשנה הולכת לכאן"). setDescript ("זה התיאור") .setNegativeButtonText ("ביטול") .בנה ();

טפל בהתקשרות חוזרת של אימות

למופע BiometricPrompt מוקצה קבוצה של שיטות התקשרות חוזרות לאימות שתודיעו לאפליקציה שלכם על תוצאות תהליך האימות.

יהיה עליכם לעטוף את כל ההתקשרויות הללו במופע ביומטרי פרומפט.

סופי BiometricPrompt myBiometricPrompt = BiometricPrompt חדש (פעילות, מנהל חדש, BiometricPrompt.AuthenticationCallback () {

השלב הבא הוא יישום של כמה, או את כל שיטות ההתקשרות הבאות:

1. onAuthenticationSucceeded ()

שיטה זו נקראת כאשר התאמת טביעת האצבע לאחת מטביעות האצבע הרשומות במכשיר. בתרחיש זה אובייקט AuthenticationResult מועבר אל ההתקשרות onAuthenticationScceeded שהיישום שלך יבצע משימה בתגובה לאימות מוצלח זה.

כדי לסייע בשמירה על הדברים בפשטות, האפליקציה שלנו תגיב על ידי הדפסת Logcat ל- Android Studio:

@Orride חלל ציבורי ב-AuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (תוצאה); Log.d (TAG, "טביעת אצבע מוכרת בהצלחה"); }

2. onAuthenticationFailed ()

שיטה זו מופעלת כאשר הסריקה הושלמה בהצלחה אך טביעת האצבע אינה תואמת אף אחת מההדפסים הרשומים במכשיר. שוב, האפליקציה שלנו תגיב לאירוע אימות זה, על ידי הדפסת קובץ ל- Logcat:

@Orride חלל ציבורי onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "טביעת אצבע לא מוכרת"); }

3. onAuthenticationError

התקשרות חוזרת זו מופעלת בכל פעם שמתרחשת שגיאה בלתי ניתנת לשחזור ולא ניתן להשלים את האימות בהצלחה. לדוגמה, אולי חיישן המגע של המכשיר מכוסה בלכלוך או שומן, המשתמש לא רשם טביעות אצבע במכשיר זה, או שאין מספיק זיכרון כדי לבצע סריקה ביומטרית מלאה.

הנה הקוד בו אשתמש באפליקציה שלי:

@ לבטל חלל ציבורי onAuthenticationError (קוד שגיאה int, @NonNull CharSequence errString) {super.onAuthenticationError (שגיאת קוד, errString); אם (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, "אירעה שגיאה בלתי ניתנת לשחזור"); }}

4. OnAuthenticationHelp

שיטת onAuthenticationHelp נקראת בכל פעם שמתרחשת שגיאה לא קטלנית והיא כוללת קוד עזרה וכזה שמספק מידע נוסף על השגיאה.

כדי לסייע בשמירה על הקוד שלנו, אני לא משתמש ב- OnAuthenticationHelp באפליקציה שלנו, אך יישום ייראה כך:

@ לבטל חלל ציבורי ב-AuthenticationHelp (int helpCode, CharSequence helpString) {super.onAuthenticationHelp (helpCode, helpString); biometricCallback.on אימות עזרה (עזרה קוד, עזרה מיתוג); }

לבסוף, עלינו לקרוא לשיטת האימות () של מופע BiometricPrompt:

myBiometricPrompt.authenticate (promptInfo);

הטמעת האימות הביומטרי של Android Pie

לאחר שתשלים את כל השלבים לעיל, MainActivity שלך אמור להיראות כך:

יבוא androidx.appcompat.app.AppCompatActivity; יבוא androidx.biometric.BiometricPrompt; יבוא android.os.Bundle; יבוא java.util.concurrent.Executor; יבוא java.util.concurrent.excectors; יבוא androidx.fragment.app.FragmentActivity; יבוא android.util.Log; יבוא android.view.View; יבוא androidx.annotation.NonNull; המעמד הציבורי של MainActivity מרחיב את AppCompatActivity {סטטי מחרוזת סופית פרטית TAG = MainActivity.class.getName (); @Orride חלל מוגן onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // צור מאגר פתילים עם פתיל יחיד // Executor newExecutor = Executors.newSingleThreadExecutor (); FragmentActivity פעילות = זה; // התחל להאזין לאירועי אימות // סופי BiometricPrompt myBiometricPrompt = new BiometricPrompt (פעילות, newExecutor, new BiometricPrompt.AuthenticationCallback) CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {// הדפס ל- Logcat // Log.d (TAG, "אירעה שגיאה בלתי ניתנת לשחזור");}} // onAuthenticationSucceeded נקרא כאשר התאמת טביעת אצבע מוצלחת // @Orride חלל ציבורי onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (תוצאה); // הדפס ל Logcat // Log.d (TAG, "טביעת אצבע" מוכר בהצלחה ");} // onAuthenticationFailed נקרא כאשר טביעת האצבע אינה תואמת // @Orride voic public onAuthenticationFailed () {super.onAuthenticationFailed (); // הדפס a לוג cat // Log.d (TAG, "טביעת אצבע לא מוכרת"); }}); // צור את המופע BiometricPrompt // final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // הוסף טקסט לדיאלוג //. SetTitle ("טקסט הכותרת הולך כאן") .setSubtitle ("כותרת המשנה הולכת לכאן" ) .setDescript ("זה התיאור") .setNegativeButtonText ("ביטול") // בנה את הדו-שיח //. build (); // להקצות onClickListener ללחצן "אימות" של האפליקציה // findViewById (R.id.launchAuthentication) .setOnClickListener (תצוגה חדשה. ViewClickListener () {@Override void public onClick (View v) {myBiometricPrompt.authenticate (promptInfo); }); }}

בחינת הפרויקט שלך

עכשיו יצרת את הפרויקט שלך, הגיע הזמן להעמיד אותו במבחן ולראות אם הוא אכן מוסיף אימות טביעות אצבע לאפליקציה שלך!

כדי להפעיל פרויקט זה, תזדקק לסמארטפון או טאבלט פיזי שמריץ Android Pie, או מכשיר אנדרואיד אנדרואיד (AVD) שמשתמש בתצוגה המקדימה של Android P ומעלה.

תצטרך לרשום לפחות טביעת אצבע אחת במכשיר שלך. אם אתה משתמש במכשיר אנדרואיד פיזי, אז:

  • אבטח את מסך הנעילה שלך באמצעות קוד PIN, סיסמא או תבנית, אם עדיין לא עשית זאת (על ידי ניווט אל "הגדרות> מסך נעילה ואבטחה> סוג נעילת מסך> דפוס / סיכה / סיסמא" ולאחר מכן פעל לפי ההוראות שעל המסך).
  • הפעל את היישום "הגדרות" של המכשיר שלך.
  • בחר "מסך נעילה ואבטחה."
  • בחר "סורק טביעות אצבע."
  • עקוב אחר ההוראות לרישום טביעת אצבע אחת או יותר.

למכשירים הווירטואליים של אנדרואיד אין חיישן מגע פיזי, כך שתצטרך לדמות אירוע מגע:

  • הפעל את ה- AVD שלך, אם עדיין לא עשית זאת.
  • לצד ה- AVD תראה פס כפתורים. מצא את הלחצן "עוד" עם שלוש הנקודות (היכן שהסמן ממוקם בתמונה הבאה) ולחץ עליו. זה משיק את החלון "בקרות מורחבות".
  • בחלון 'בקרות מורחבות' בחר 'טביעת אצבע'. זה פותח מערכת של פקדים, בה תוכלו לחקות אירועי מגע שונים.
  • פתח את התפריט הנפתח ובחר את טביעת האצבע שברצונך לרשום במכשיר זה; אני משתמש ב"אצבע 1. "
  • עכשיו, בואו נעביר את תשומת ליבנו למכשיר המדומה. הפעל את היישום "הגדרות" של ה- AVD ובחר "אבטחה ומיקום."
  • אם עדיין לא הגדרת קוד PIN, סיסמא או תבנית, בחר "נעילת מסך" ובצע את ההוראות שעל המסך כדי לאבטח את מסך הנעילה שלך, נווט בחזרה למסך הראשי "הגדרות> אבטחה ומיקום".
  • בחר "טביעת אצבע", ואחריה "הוסף טביעת אצבע."
  • כעת תתבקש להקיש את האצבע לחיישן המגע. במקום זאת, המשך ללחוץ על "גע בחיישן" עד שתראה "טביעת אצבע שנוספה".

  • לחץ על 'בוצע'.
  • אם ברצונך לרשום טביעות אצבע נוספות, שטוף וחזור על השלבים לעיל.

לאחר שתירשם לפחות טביעת אצבע אחת, אתה מוכן להעמיד את בקשתך למבחן. אני הולך לבדוק כיצד האפליקציה שלנו מטפלת בשלושה תרחישים שונים:

  • המשתמש מנסה לאמת באמצעות טביעת אצבע רשומה.
  • המשתמש מנסה לאמת באמצעות טביעת אצבע שאינה רשומה במכשיר זה.
  • המשתמש מנסה לאמת באמצעות טביעות אצבע לא רשומות, מספר פעמים ובהמשך מהיר.

ננסה לאמת באמצעות טביעת האצבע שרשמנו זה עתה במכשיר שלנו:

  • וודא שאתה צופה במסך ה- Logcat של Android Studio של Android, מכיוון שכאן יופיעו האפליקציות השונות של היישום שלך.

  • התקן את היישום שלך במכשיר הבדיקה.
  • הקש על לחצן "אימות טביעת אצבע" של היישום שלך. תופיע דו-שיח אימות טביעות האצבע.
  • אם אתה משתמש במכשיר פיזי, לחץ לחיצה ארוכה על קצה האצבע שלך מול חיישן המגע של המכשיר. אם אתה משתמש ב- AVD, השתמש בלחצן "גע בחיישן" כדי לדמות אירוע מגע.
  • בדוק את צג Logcat. אם האימות הצליח, אתה אמור לראות את הדברים הבאים: "טביעת אצבע מוכרת בהצלחה"

בשלב הבא, נראה מה יקרה אם אנו מנסים לאמת באמצעות טביעת אצבע שאינה רשומה במכשיר זה:

  • הקש שוב על לחצן "אימות טביעת אצבע" של האפליקציה.
  • אם אתה משתמש ב- AVD, השתמש בחלון "פקדים מורחבים" כדי לבחור טביעת אצבע לא רשום במכשיר זה; אני משתמש ב"אצבע 2. "לחץ על לחצן" גע בחיישן "לחץ.
  • אם אתה משתמש בסמארטפון או טאבלט אנדרואיד פיזי, לחץ לחיצה ארוכה על קצה האצבע שלך מול חיישן המגע של המכשיר - וודא שאתה משתמש באצבע שאינה רשומה במכשיר זה!
  • בדוק את ה- Logcat של סטודיו אנדרואיד, כעת אמור להציג "טביעת אצבע לא מוכרת".

כאמור, ה- API של BiometricPrompt מטפל באופן אוטומטי בניסיונות אימות מוגזמים כושלים. כדי לבדוק פונקציונליות זו:

  • הקש על לחצן "אימות טביעת אצבע" של האפליקציה שלך.
  • נסה לאמת מספר פעמים ברצף מהיר, באמצעות טביעת אצבע לא רשומה.
  • לאחר מספר ניסיונות, תיבת הדו-שיח צריכה להיסגר אוטומטית. בדוק את Logcat של Android Studio, ותראה את הדברים הבאים: "אירעה שגיאה בלתי ניתנת לשחזור."

אתה יכול להוריד את היישום המלא מ- GitHub.

מסיימים

במאמר זה בדקנו את ממשק ה- API החדש של ביו-מטרי פרומפט של Android Pie, המאפשר להוסיף בקלות אימות טביעות אצבע ליישום שלכם. האם אתה חושב שביומטרי פרומפט הוא שיפור בשיטות האימות הקודמות של אנדרואיד של אנדרואיד? ספר לנו בתגובות למטה!

סמסונג גלקסי 10 5G הוא אחד הסמארטפונים החשובים יותר שיצאו בשנים האחרונות. זה הטלפון החכם הראשון שיכול להתחבר לרשתות האלחוטיות 5G שרק מתחילות להופיע ברחבי ארה"ב. זהו גם הטלפון הגדול ביותר של סמסונ...

ony WH-1000XM3 החדש של ony משתמש ב- LDAC כקודק ה- Bluetooth העיקרי שלו, אך יתכן שלא תקבלו את הטוב ביותר שיש להם להציע.הסיבות לרכוש את ony WH-1000XM3:...

אנחנו ממליצים