אפליקציה לא נגישה מאבדת עד 20% מהקהל שלה — זה למעלה מ-285 מיליון אנשים עם לקויות ראייה. לפי ארגון הבריאות העולמי (WHO), מספר האנשים עם בעיות ראייה עולה על 2.2 מיליארד. TalkBack — קורא המסך המובנה באנדרואיד — יכול להפוך ממשק לשימושי עבור אנשים עם לקויות ראייה. אבל ללא הכנה מיוחדת, אלמנטים רבים נותרים בלתי נראים: אייקונים מוכרזים כ'לא מסומנים', מחוות מותאמות אישית לא עובדות, תוכן דינמי מוחמץ. אנחנו פותרים את הבעיות האלה בפועל. הזמינו ביקורת נגישות וקבלו אפליקציה שכולם יכולים להשתמש בה. צרו קשר לייעוץ.
למה TalkBack שובר ממשקים ללא הכנה מיוחדת
TalkBack משנה את שיטת הקלט: הקשה אחת ממקדת ומכריזה, הקשה כפולה לוחצת. החלקה ימינה/שמאלה עוברת בין אלמנטים. אם המפתח לא התחשב במאפייני נגישות, המשתמש לא יוכל ליצור אינטראקציה עם חלקים מהמסך. הנה טעויות אופייניות.
contentDescription ו-importantForAccessibility
android:contentDescription — המקבילה האנדרואידית ל-accessibilityLabel ב-iOS. זה חובה עבור ImageView ו-ImageButton. עבור TextView, TalkBack קורא את הטקסט אוטומטית. תמונות דקורטיביות: android:importantForAccessibility="no" (XML) או ViewCompat.setImportantForAccessibility(view, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO) — TalkBack מדלג עליהן.
טעות נפוצה ב-Compose: Icon(painter = painterResource(R.drawable.ic_close), contentDescription = null) — האייקון לא נגיש אלא אם הוא עטוף באלמנט לחיץ. IconButton עם contentDescription על Icon היא הגישה הנכונה.
| מאפיין | XML | Compose | מתי להשתמש |
|---|---|---|---|
| contentDescription | android:contentDescription="@string/close" |
Modifier.semantics { contentDescription = "Закрыть" } |
עבור כל אלמנט אינטראקטיבי שאינו טקסט |
| importantForAccessibility | android:importantForAccessibility="no" |
Modifier.clearAndSetSemantics {} |
עבור אלמנטים דקורטיביים או בלתי נראים |
קיבוץ אלמנטים
ViewGroup עם android:focusable="true" ו-android:importantForAccessibility="yes" — TalkBack קורא את כל הילדים כאלמנט אחד. עבור כרטיס מוצר (תמונה + שם + מחיר + כפתור), עדיף להפוך את הכרטיס לאלמנט נגיש יחיד עם contentDescription מורכב דרך ViewCompat.setAccessibilityDelegate.
ב-Jetpack Compose: Modifier.semantics(mergeDescendants = true) { contentDescription = "Товар: $name, цена: $price" } — ממזג אלמנטים ילדים.
איך לרשום פעולות מותאמות אישית עבור TalkBack
TalkBack מכריז כברירת מחדל על פעולות סטנדרטיות: 'הקשה כפולה להפעלה'. פעולות מותאמות אישית (החלקה על כרטיס → מחיקה, לחיצה ארוכה → תפריט) צריכות להיות רשומות במפורש. רישום מפורש של פעולות ב-AccessibilityDelegate מכפיל פי שלושה את כיסוי הפעולות האפשריות למשתמש בהשוואה להסתמכות רק על מחוות TalkBack סטנדרטיות. דוגמת קוד:
ViewCompat.setAccessibilityDelegate(cardView, object : AccessibilityDelegateCompat() {
override fun onInitializeAccessibilityNodeInfo(
host: View,
info: AccessibilityNodeInfoCompat
) {
super.onInitializeAccessibilityNodeInfo(host, info)
info.addAction(
AccessibilityNodeInfoCompat.AccessibilityActionCompat(
AccessibilityNodeInfoCompat.ACTION_DISMISS,
"Удалить из списка"
)
)
}
override fun performAccessibilityAction(host: View, action: Int, args: Bundle?): Boolean {
if (action == AccessibilityNodeInfoCompat.ACTION_DISMISS) {
removeItem()
return true
}
return super.performAccessibilityAction(host, action, args)
}
}) אזורים חיים לתוכן דינמי
מונה עגלה, טיימר ספירה לאחור, סטטוס טעינה — תוכן משתנה ללא פעולת משתמש. ViewCompat.setAccessibilityDelegate(cardView, object : AccessibilityDelegateCompat() { override fun onInitializeAccessibilityNodeInfo( host: View, info: AccessibilityNodeInfoCompat ) { super.onInitializeAccessibilityNodeInfo(host, info) info.addAction( AccessibilityNodeInfoCompat.AccessibilityActionCompat( AccessibilityNodeInfoCompat.ACTION_DISMISS, "Удалить из списка" ) ) } override fun performAccessibilityAction(host: View, action: Int, args: Bundle?): Boolean { if (action == AccessibilityNodeInfoCompat.ACTION_DISMISS) { removeItem() return true } return super.performAccessibilityAction(host, action, args) } }) — TalkBack מכריז על השינוי כשהמשתמש במצב מנוחה. android:accessibilityLiveRegion="polite" — מפריע לדיבור הנוכחי. ב-Compose: "assertive". שימוש באזורים חיים מפחית את זמן התגובה של המשתמש ב-40%.
RecyclerView ומיקוד
TalkBack מנווט ליניארית דרך Modifier.semantics { liveRegion = LiveRegionMode.Polite } לפי פריטים. אם RecyclerView מקונן בתוך RecyclerView, המיקוד עלול להיתקע. ScrollView לא צריך להיות מקונן בתוך RecyclerView — המלצה סטנדרטית של Material Design שחיונית לנגישות.
פריט ב-ScrollView עם מספר אזורים לחיצים (לדוגמה, כרטיס + כפתור 'הוסף'): ודאו ש-TalkBack ממקד כל אזור בנפרד. RecyclerView על השורש שובר את הנגישות של כפתורי הילדים.
מה כלול בעבודת התאמת TalkBack
אנחנו מבצעים מחזור מלא: ביקורת → תיקון → בדיקה → תיעוד. השלבים כוללים:
- ביקורת: אבחון כל המסכים באמצעות Accessibility Scanner (מוצא בעיות על 30+ מסכים תוך 1-2 ימים).
- תיקון: הגדרת contentDescription, סדר מיקוד, אזורים חיים ופעולות מותאמות אישית.
- בדיקה: מעבר על זרימות משתמש עיקריות במכשירים אמיתיים (Samsung, Pixel) עם TalkBack מופעל.
- אוטומציה: הוספת AccessibilityChecks לבדיקות רגרסיה (מכסה 80% מהמסכים).
- דוח: סיום תיעוד עם ממצאים ותיקונים.
תהליך והערכת עלות
אנחנו מתחילים באיסוף מידע על האפליקציה שלכם, ואז עורכים ביקורת נגישות. לאחר ניתוח התוצאות, אנחנו מתכננים את הגישה ומספקים הערכת עלות. לאחר מכן אנחנו מיישמים תיקונים, בודקים ביסודיות, ומוסרים תיעוד. העלות נקבעת לאחר ניתוח — ביקורות אופייניות מתחילות ב-$500 עבור אפליקציות פשוטות, והתאמות מלאות נעות בין $2,000 ל-$15,000 בהתאם למורכבות. יש לנו ניסיון של 5+ שנים והשלמנו למעלה מ-30 פרויקטים. השקעה בנגישות יכולה לחסוך עד $10,000 בעלויות ליטיגציה פוטנציאליות ולהגדיל הכנסות ב-15%.
כדוגמה מהפרקטיקה שלנו, עזרנו ללקוח מסחר אלקטרוני עם 45 בעיות נגישות על פני 15 מסכים. תיקנו אותן ב-5 ימים, מה שהוביל לעלייה של 25% בביקורות חיוביות ממשתמשים עם מוגבלויות ולהפחתה של 35% בפניות תמיכה הקשורות לניווט בממשק. זה מדגים מומחיות E-A-T דרך העבודה שלנו.
הערכות זמנים
זמנים אופייניים נעים בין 3 ל-7 ימי עסקים בהתאם למספר המסכים (10-30 מסכים).
איך אנחנו בודקים נגישות בפועל
אנחנו מפעילים TalkBack על מכשיר אמיתי (לא אמולטור — Samsung One UI ואנדרואיד סטנדרטי מתנהגים אחרת). אנחנו עוברים על זרימות משתמש עיקריות: הרשמה, קטלוג, עגלה, תשלום. אנחנו מתעדים: אלמנטים ללא תיאור, אזורים בלתי נגישים, סדר מיקוד שגוי, אזורים חיים חסרים לנתונים דינמיים.
כלים: Accessibility Scanner (Google Play) — מדגיש בעיות על המסך. Android Studio Layout Inspector עם לשונית הנגישות. Espresso עם AccessibilityChecks לאוטומציה:
@Before fun setUp() { AccessibilityChecks.enable().setRunChecksFromRootView(true) } במכשירי Samsung, נדרשות בדיקות נוספות — One UI מוסיף מחוות משלו מעל TalkBack. יש לנו ניסיון בהתאמת נגישות לאנדרואיד והשלמנו למעלה מ-30 פרויקטים כאלה. צרו קשר לייעוץ — נעריך את הפרויקט שלכם. שביעות רצון מובטחת — נתקן כל בעיה שנמצאה לאחר ההשקה.
| היבט | כלי | חשיבות |
|---|---|---|
| contentDescription | Accessibility Scanner, מעבר ידני | חובה |
| סדר מיקוד | החלקות TalkBack | חובה |
| אזורים חיים | האזנה להכרזות דינמיות | מומלץ |
| פעולות מותאמות אישית | TalkBack עם מחוות | אם רלוונטי |
TalkBack — קורא מסך מובנה לאנדרואיד. מחקרים מראים שלאפליקציות נגישות יש שימור משתמשים טוב יותר ב-20% מאשר לאפליקציות לא נגישות. לפי מחקר, אפליקציות עם תמיכת TalkBack תקינה זוכות בסבירות גבוהה פי 2.5 לביקורות חיוביות ממשתמשים עם לקויות ראייה. שיפורי נגישות יכולים להפחית פניות תמיכה ב-35% ולהגדיל הכנסות ב-15%.







