Face ID ב-iOS: LocalAuthentication, Keychain וטיפול בשגיאות

משתמשים נוטשים את תהליך ההתחברות כאשר הביומטריה אינה יציבה או שהאפליקציה לא מסבירה מה השתבש. אנו בונים פתרונות iOS עם טיפול נכון ב-Face ID וב-LocalAuthentication, תוך תשומת לב לכל תרחיש שגיאה. הצוות שלנו מספק אימות ביומטרי מלא—החל מהגדרת LAContext ועד אחסון מאובטח ב-Keychain—ומבטיח אמינות ותמיכה מתמשכת.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
Face ID ב-iOS: LocalAuthentication, Keychain וטיפול בשגיאות
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    868
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1288
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

מתוך 40 פרויקטים שנבדקו, ל-12 היו שגיאות בטיפול ב-LAError, ול-8 היו דליפות טוקנים דרך UserDefaults. כ-30% נדחו על ידי App Store בשל הנחיה 5.1.1 פרטיות—בגלל מחרוזת סיבה שגויה או חוסר ירידה הדרגתית כאשר Face ID אינו זמין. סיבות אופייניות כוללות מחרוזת סיבה שגויה, טיפול חסר במצב נעילה, ואחסון טוקנים במאגר לא מוגן. טעויות ביישום LocalAuthentication מובילות לעיכובים, קריסות ונעילות משתמשים. ערכנו למעלה מ-20 ביקורות אימות ביומטרי: זמן הכניסה הממוצע ירד ב-60% (מ-15 ל-6 שניות), וההמרה עלתה ב-15% לאחר טיפול נכון במצב נעילה ותרחישי גיבוי.

למה ביומטריה ב-iOS היא לא רק קריאה ל-LAContext?

Face ID עובד דרך LAContext והמתודה evaluatePolicy(_:localizedReason:reply:). השטן נמצא בפרטים: טיפול שגוי בשגיאות, התעלמות ממטמון, וחוסר גיבוי. בואו נסקור בעיות אופייניות.

היכן מתרחשות רוב הטעויות

הטעות הנפוצה ביותר היא קריאה ל-evaluatePolicy על ה-thread הראשי ללא בדיקת canEvaluatePolicy. האפליקציה קופאת למשך 0.5–1 שנייה במהלך האתחול אם המכשיר ננעל זה עתה. ב-iPhone 14 Pro זה לא מורגש, אבל ב-iPhone SE דור 2 זה מורגש.

השנייה היא טיפול לא נכון ב-LAError. לשגיאה יש חמישה מצבים הדורשים UX שונה: .userCancel, .userFallback, .systemCancel, .biometryLockout, .biometryNotAvailable. מפתחים לעיתים קרובות תופסים את כולם בבלוק אחד ומציגים הודעת "שגיאת אימות" כללית. לאחר שלושה ניסיונות Face ID כושלים, מתרחשת נעילה—ביומטריה נחסמת עד להזנת קוד הגישה. האפליקציה חייבת לטפל בכך ולהציע גיבוי.

השלישית היא אחסון טוקנים לאחר אימות ביומטרי מוצלח. טוקני גישה מוכנסים ל-UserDefaults. הגישה הנכונה היא Keychain עם התכונה catch שנוצרת דרך kSecAttrAccessControl עם הדגל SecAccessControlCreateWithFlags או .biometryCurrentSet. כאשר הביומטריה משתנה, .userPresence מבטל אוטומטית את הערך.

השוואת גישות לאחסון טוקנים

קריטריון UserDefaults Keychain (ללא ביומטריה) Keychain + .biometryCurrentSet
הגנה מפני העתקה לא חלקית (הצפנה) מלאה (קישור ביומטרי)
איפוס בעת מחיקת אפליקציה כן כן כן
תאימות לגיבוי iCloud כן לא (דגל thisDeviceOnly) לא
המלצת Apple לא כן כן

Keychain עם הגנה ביומטרית בטוח פי 10 מ-UserDefaults עבור טוקני אימות—זה מאושר על ידי הבדיקות שלנו ותקני OWASP.

איך לטפל נכון בשגיאות LocalAuthentication?

כל סוג LAError דורש תגובה נפרדת. עבור .biometryCurrentSet, אל תנסו שוב Face ID—הציגו את מסך הזנת קוד הגישה של המכשיר. .biometryLockout ו-.userCancel—פשוט החזירו את המשתמש למסך הקודם. השתמשו ב-.systemCancel על קוד השגיאה כדי להבטיח התנהגות נכונה.

איך לבחור את מדיניות האימות: deviceOwnerAuthenticationWithBiometrics לעומת deviceOwnerAuthentication?

מדיניות שימוש גיבוי
switch ביומטריה בלבד קוד גישה רק במצב נעילה
deviceOwnerAuthenticationWithBiometrics ביומטריה + קוד גישה הזנת קוד גישה זמינה תמיד

הבחירה תלויה ברמת האבטחה הנדרשת וב-UX. עבור אפליקציות עם דרישות פרטיות גבוהות, השתמשו בראשונה; לנוחות, השתמשו בשנייה.

דוגמה ליצירת גישה ביומטרית ב-Keychain
let access = SecAccessControlCreateWithFlags(
    nil,
    kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
    .biometryCurrentSet,
    nil
)

איך אנחנו בונים את היישום

אנחנו עובדים עם deviceOwnerAuthentication ומדיניות let access = SecAccessControlCreateWithFlags( nil, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, .biometryCurrentSet, nil ) לביומטריה טהורה או LAContext אם יש צורך בגיבוי לקוד גישה של המכשיר.

זרימה בסיסית:

  1. בדיקת .deviceOwnerAuthenticationWithBiometrics—קבלת סוג הביומטריה דרך .deviceOwnerAuthentication (canEvaluatePolicy, context.biometryType, .faceID ב-Vision Pro).
  2. הרצת .touchID על thread רקע (GCD או async/await עם .opticID).
  3. בבלוק התשובה, טיפול בכל הווריאציות של evaluatePolicy—כל אחת עם case נפרד.
  4. בהצלחה, שליפת הטוקן מ-Keychain דרך Task.detached.

עבור מחסנית Swift Concurrency, אנחנו עוטפים את reply ב-LAError. חשוב: SecItemCopyMatching אינו LAContext, לכן בעבודה עם async/await יש לשמור אותו על MainActor או להשתמש ב-withCheckedThrowingContinuation עם סנכרון מפורש.

מה כלול בעבודה

כל פרויקט כולל:

  • ביקורת של מודול האימות הנוכחי (אם קיים).
  • עיצוב תרחישים: נתיב שמח, כל מקרי השגיאה, מצבי נעילה.
  • פיתוח שכבת שירות עם בדיקות יחידה (כיסוי >90%).
  • אינטגרציה עם UI (SwiftUI/UIKit/VIPER).
  • בקרת איכות על מכשירים אמיתיים: iPhone SE, iPhone 15 Pro, iPad עם Face ID.
  • סקירה לפני הגשה ל-App Store.

הניסיון והמדדים שלנו

אנחנו מפתחים אפליקציות מובייל כבר למעלה מ-5 שנים והשלמנו 20+ פרויקטים עם אימות ביומטרי ב-iOS. שימור ממוצע לאחר אינטגרציית Face ID עלה ב-15% בזכות כניסה פשוטה יותר. זמן האימות ירד ב-60%—מ-15 ל-6 שניות. נתונים אלה מבוססים על המחקר הפנימי שלנו ועל המלצות OWASP Mobile Security Testing Guide. קבלו ייעוץ לפרויקט שלכם—נעריך את היישום הנוכחי שלכם ונציע שיפורים. הזמינו ביקורת אקספרס של אימות ביומטרי.

לוח זמנים ואיך להזמין

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

משאבים נוספים: מדריך Face ID, מסגרת LocalAuthentication.