Accessibility (a11y) — معذور افراد کے لیے موبائل ایپلیکیشنز کو قابل استعمال بنانا۔ اس میں اسکرین ریڈرز (iOS پر VoiceOver، Android پر TalkBack)، متن کا سائز تبدیل کرنا (Dynamic Type)، کافی رنگ کنٹراسٹ (WCAG 2.1 لیول AA)، بصارت کے بغیر نیویگیشن اور اشاروں کے متبادل شامل ہیں۔ ڈبلیو ایچ او (2023) کے مطابق، 1.3 بلین سے زیادہ لوگ (16% آبادی) کسی نہ کسی شکل کی معذوری کے ساتھ رہتے ہیں — قابلیت رسائی کوئی اختیار نہیں، بلکہ ایک ضرورت ہے۔ مزید جاننے کے لیے Apple کی سرکاری قابلیت رسائی دستاویزات دیکھیں۔
اہم نکات
Accessibility (مخفف a11y — «a» اور «y» کے درمیان 11 حروف) — بصارت، سماعت، حرکت اور علمی معذوری والے افراد کے لیے قابل استعمال ایپلیکیشنز تیار کرنے کا عمل۔ موبائل ڈویلپمنٹ میں، قابلیت رسائی چار اہم منظرناموں کا احاطہ کرتی ہے: نابینا صارفین (اسکرین ریڈرز)، کم بینائی والے صارفین (سائز تبدیل کرنا، کنٹراسٹ)، بہرے اور کم سننے والے صارفین (سب ٹائٹلز، آواز کے بصری متبادل)، اور محدود حرکت پر قابو رکھنے والے صارفین (آواز کنٹرول، Switch Control، بڑے ٹچ ایریاز)۔
قانونی تقاضے — بہت سے ممالک میں، قابلیت رسائی قانونی طور پر لازمی ہے۔ امریکہ: Section 508 اور ADA۔ یورپی یونین: European Accessibility Act (2025)۔ برطانیہ: Equality Act 2010۔ قابلیت رسائی کی معاونت کے بغیر، ایک ایپ مقدمات کا نشانہ بن سکتی ہے — 2023 میں امریکہ میں ناقابل رسائی ڈیجیٹل مصنوعات سے متعلق 4,000 سے زیادہ مقدمات دائر کیے گئے۔ Apple اور Google ایپ کی نگرانی کے دوران قابلیت رسائی کی جانچ کرتے ہیں: App Store Review Guidelines (4.2) اور Google Play Store کم از کم قابلیت رسائی کی معاونت کا تقاضا کرتے ہیں۔
کاروباری دلیل — قابلیت رسائی آپ کے سامعین کو بڑھاتی ہے۔ Return on Disability (2021) کے مطابق، معذور افراد سالانہ 13 ٹریلین ڈالر قابل استعمال آمدنی پر کنٹرول رکھتے ہیں۔ قابل رسائی ایپس تلاش میں بہتر درجہ بندی کرتی ہیں (semantic HTML، متبادل متن)، ان کی صارف کی درجہ بندی زیادہ ہوتی ہے اور UX مسائل کے بارے میں کم جائزے ہوتے ہیں۔ IT Sectr میں، ہم تمام منصوبوں کی تکمیل کی تعریف میں قابلیت رسائی شامل کرتے ہیں — یہ معیار کا معیار ہے، کوئی اختیاری بہتری نہیں۔
VoiceOver — iOS، iPadOS اور macOS میں شامل Apple کا اسکرین ریڈر۔ صارف اسکرین پر انگلی پھیرتا ہے، VoiceOver انگلی کے نیچے والے عنصر کا نام پڑھتا ہے۔ ڈبل ٹیپ عنصر کو فعال کرتا ہے۔ VoiceOver 40 سے زیادہ اشاروں کو سپورٹ کرتا ہے: تین انگلی سے سوائپ (اسکرولنگ)، دو انگلی سے ڈبل ٹیپ (رکنا)، Z اشارہ (واپس جانا)۔ ڈویلپر UIAccessibility پروٹوکول اور accessibilityLabel، accessibilityTraits، accessibilityHint خصوصیات کے ذریعے کنٹرول کرتے ہیں کہ VoiceOver کیا اور کیسے پڑھتا ہے۔
class CustomButton: UIButton {
override var isAccessibilityElement: Bool {
get { return true }
set {}
}
// accessibilityLabel کو اوور رائڈ کریں
override var accessibilityLabel: String? {
get { return "فارم جمع کرانے کا بٹن" }
set {}
}
// accessibilityHint کو اوور رائڈ کریں
override var accessibilityHint: String? {
get { return "ڈیٹا جمع کرانے کے لیے ڈبل تھپتھپائیں" }
set {}
}
// accessibilityTraits کو اوور رائڈ کریں
override var accessibilityTraits: UIAccessibilityTraits {
get { return .button }
set {}
}
}
// Dynamic Type — متن کی پیمائش
titleLabel.font = UIFontMetrics.default.scaledFont(
for: UIFont.systemFont(ofSize: 16)
)
titleLabel.adjustsFontForContentSizeCategory = true
متحرک نوع نگاری — iOS میں Dynamic Type صارف کو متن کا سائز منتخب کرنے دیتا ہے (XS سے XXXL تک)۔ ڈویلپر خودکار پیمائش کے لیے UIFontMetrics.scaledFont استعمال کرتے ہیں۔ متن تمام سائزوں پر درست طریقے سے ظاہر ہونا چاہیے: لائنیں نہیں کٹنی چاہئیں، بٹن متن کے متناسب بڑھنے چاہئیں۔ متن کا سائز تبدیل ہونے پر UITableView خود بخود سیل کی اونچائی اپ ڈیٹ کرتا ہے۔ Dynamic Type کو نظر انداز کرنے کا مطلب ہے اپنی ایپ کو کم بینائی والے صارفین کے لیے ناقابل رسائی بنانا۔
SwiftUI قابلیت رسائی میں ترمیم کرنے والے فراہم کرتا ہے: .accessibilityLabel()، .accessibilityHint()، .accessibilityAddTraits()، .accessibilitySortPriority()۔ پہلے سے طے شدہ طور پر، تمام معیاری SwiftUI عناصر (Text، Button, Image) خودکار لیبلز کے ساتھ پہلے سے ہی قابلیت رسائی عناصر ہیں۔ حسب ضرور View کے لیے، بچوں کے عناصر کو ایک میں یکجا کرنے کے لیے .accessibilityElement(children: .combine) استعمال کریں۔ SwiftUI خود بخود Dynamic Type اور VoiceOver کو سپورٹ کرتا ہے۔
VStack {
Image(systemName: "trash")
.accessibilityLabel(Text("آئٹم حذف کریں"))
Text("ردی کی ٹوکری")
.font(.body)
}
.accessibilityElement(children: .combine)
.accessibilityAddTraits(.isButton)
.accessibilityHint(Text("منتخب آئٹم کو مستقل طور پر حذف کرتا ہے"))
TalkBack — Google کا اسکرین ریڈر، زیادہ تر Android آلات پر پہلے سے انسٹال (تمام Android 5+ ورژنز کے لیے Google Play پر دستیاب)۔ TalkBack VoiceOver جیسے ہی اشارے استعمال کرتا ہے: نیویگیشن کے لیے سوائپ، فعال کرنے کے لیے ڈبل ٹیپ۔ ڈویلپر XML میں android:contentDescription وصف کے ذریعے یا کوڈ میں setContentDescription() کے ذریعے عناصر کی وضاحتیں سیٹ کرتے ہیں۔ ImageView کے لیے، contentDescription لازمی ہے — اس کے بغیر، TalkBack «غیر لیبل شدہ» کہے گا یا فائل کا نام پڑھے گا۔
// XML: ImageView کے لیے contentDescription
<ImageView
android:id="@+id/iconDelete"
android:src="@drawable/ic_delete"
android:contentDescription="@string/delete_button_desc"
android:focusable="true"
android:clickable="true" />
// Kotlin: پروگراماتی تفویض
iconDelete.contentDescription = getString(R.string.delete_button_desc)
// Accessibility Delegate (حسب ضرورت)
iconDelete.accessibilityDelegate = object : View.AccessibilityDelegate() {
override fun onInitializeAccessibilityNodeInfo(
host: View, info: AccessibilityNodeInfo
) {
super.onInitializeAccessibilityNodeInfo(host, info)
info.text = "حذف کریں بٹن"
info.contentDescription = "منتخب آئٹم حذف کریں"
info.className = Button::class.java.name
}
}
// متحرک اپ ڈیٹس کے لیے Live Regions
textView.accessibilityLiveRegion = View.ACCESSIBILITY_LIVE_REGION_POLITE
Live Regions — فوکس کے بغیر مواد کی تبدیلیوں کے بارے میں TalkBack کو مطلع کرنے کا Android طریقہ کار۔ android:accessibilityLiveRegion وصف تین قدریں قبول کرتا ہے: none (کوئی اطلاع نہیں)، polite (موجودہ کے بعد اعلان)، assertive (فوری اعلان)۔ لوڈنگ اسٹیٹس اپ ڈیٹس کے لیے polite، سنگین غلطیوں کے لیے assertive استعمال کریں۔ assertive کا زیادہ استعمال صارف کے لیے افراتفری پیدا کرے گا — TalkBack مسلسل موجودہ کارروائی میں خلل ڈالے گا۔
Accessibility Scanner — سورس کوڈ تک رسائی کے بغیر Android ایپ کی قابلیت رسائی کی جانچ کے لیے Google کی مفت ایپ۔ اسکینر جانچتا ہے: متن کا کنٹراسٹ، ٹچ ایریا کا سائز (Android قابلیت رسائی رہنما اصولوں کے مطابق کم از کم 48×48dp)، ImageView کے لیے contentDescription اور عناصر کا درست درجہ بندی۔ خودکار ٹیسٹوں کے لیے، Espresso سے AccessibilityChecks استعمال کریں — یہ CI/CD میں ضم ہوتے ہیں اور ہر بلڈ کے ساتھ قابلیت رسائی کی جانچ کرتے ہیں۔
WCAG 2.1 (Web Content Accessibility Guidelines) — W3C کے تیار کردہ بین الاقوامی قابلیت رسائی معیار۔ ورژن 2.1 (2018) موبائل ایپلیکیشنز کے لیے 13 اضافی معیارات شامل کرتا ہے۔ مطابقت کی سطحیں: A (کم از کم)، AA (زیادہ تر تنظیموں کے لیے لازمی)، AAA (زیادہ سے زیادہ)۔ Apple اور Google ایپس شائع کرنے کے لیے کم از کم کے طور پر AA لیول کی سفارش کرتے ہیں۔ WCAG 2.2 2023 میں فوکس اور ان پٹ کے لیے بہتری کے ساتھ جاری کیا گیا تھا۔
اہم معیارات موبائل ڈویلپمنٹ کے لیے: کم از کم 4.5:1 (AA) یا 7:1 (AAA) متن کا کنٹراسٹ، کم از کم 44×44pt (iOS) یا 48×48dp (Android) ٹچ ایریا کا سائز، فعالیت میں کمی کے بغیر لی اسکیپ اور پورٹریٹ واقفیت کے لیے معاونت، اینیمیشن غیر فعال کرنے کی صلاحیت (prefers-reduced-motion)، ملٹی میڈیا کے لیے کیپشنز اور آواز کنٹرول کے ساتھ مطابقت (iOS پر Voice Control، Android پر Voice Access)۔
| WCAG 2.1 معیار | سطح | iOS تقاضہ | Android تقاضہ |
|---|---|---|---|
| 1.4.3 کنٹراسٹ (متن) | AA | عام کے لیے 4.5:1، بڑے کے لیے 3:1 | عام کے لیے 4.5:1، بڑے کے لیے 3:1 |
| 1.4.11 کنٹراسٹ (غیر متن) | AA | آئیکنز، بارڈرز کے لیے 3:1 | آئیکنز، بارڈرز کے لیے 3:1 |
| 2.5.5 ہدف کا سائز | AAA | 44×44pt | 48×48dp |
| 2.3.3 اینیمیشن | AAA | prefers-reduced-motion | android:animateLayoutChanges |
| 4.1.2 نام، کردار، قدر | A | accessibilityLabel, traits | contentDescription, role |
کنٹراسٹ جانچ کے اوزار — Colour Contrast Analyser (TPGI), WebAIM Contrast Checker, Stark (Figma), Accessibility Inspector (Xcode)۔ IT Sectr میں، ہم ڈیزائن کے مرحلے (Figma + Stark) اور ڈویلپمنٹ کے مرحلے (Accessibility Inspector / Accessibility Scanner) میں کنٹراسٹ کی جانچ کرتے ہیں۔ 18pt (14pt bold) سے کم تمام متن کے لیے کم از کم تقاضہ 4.5:1 ہے۔ لوگو اور آرائشی عناصر کے لیے کنٹراسٹ کی ضرورت نہیں ہے۔
iOS جانچ — Xcode میں Accessibility Inspector (Xcode → Open Developer Tool → Accessibility Inspector) ہر عنصر کے لیے لیبل، traits اور ہنٹ کی جانچ کرتا ہے۔ VoiceOver کو ترتیبات میں یا قابلیت رسائی شارٹ کٹ (بٹن تین بار دبانے) کے ذریعے فعال کیا جا سکتا ہے۔ خودکار ٹیسٹوں کے لیے، XCTAssertTrue(app.staticTexts["label"].isAccessibilityElement) کے ساتھ XCUITest استعمال کریں۔ Apple VoiceOver فعال ہونے پر تمام ایپ اسکرینوں کی جانچ کرنے کی سفارش کرتا ہے۔
Android جانچ — Accessibility Scanner (Play Store) کنٹراسٹ، ٹچ ایریا کے سائز اور contentDescription کی جانچ کرتا ہے۔ آٹومیشن کے لیے: Espresso AccessibilityChecks (درآمد: androidTestImplementation 'androidx.test.espresso:espresso-accessibility:3.5.1')۔ Google مندرجہ ذیل چیک لسٹ کی سفارش کرتا ہے: ہر ImageView میں contentDescription ہے، ٹچ ایریاز کم از کم 48×48dp ہیں، متن بغیر کٹے 200% تک پھیلتا ہے، اور تمام عناصر TalkBack سوائپ کے ذریعے قابل رسائی ہیں۔
IT Sectr چیک لسٹ — ریلیز سے پہلے، ہم تصدیق کرتے ہیں: (1) VoiceOver/TalkBack تمام عناصر کو درست پڑھتا ہے، (2) متن فعالیت میں کمی کے بغیر زیادہ سے زیادہ سائز تک پھیلتا ہے، (3) تمام ImageView میں contentDescription ہے، (4) تمام تھیمز میں متن کا کنٹراسٹ ≥4.5:1 ہے، (5) ٹچ ایریاز ≥44pt/48dp ہیں، (6) کوئی سیاق و سباق مینو صرف لمبا دبانے سے قابل رسائی نہیں، (7) سسٹم کی ترتیبات میں Reduce Motion / Remove Animations کے لیے معاونت۔ یہ چیک لسٹ ہر سپرنٹ کی تکمیل کی تعریف کا حصہ ہے۔
اکثر پوچھے گئے سوالات
VoiceOver — iOS، iPadOS، macOS کے لیے Apple کا اسکرین ریڈر۔ ایک اور کئی انگلیوں کے اشارے (سوائپ، ڈبل ٹیپ) استعمال کرتا ہے۔ TalkBack — اسی طرح کے اشاروں کے ساتھ Android کے لیے Google کا ہم منصب۔ VoiceOver accessibilityLabel پڑھتا ہے، TalkBack contentDescription پڑھتا ہے۔ دونوں بریل ڈسپلے اور آواز کنٹرول کو سپورٹ کرتے ہیں۔ فعالیت میں کوئی بنیادی فرق نہیں ہے۔
contentDescription — Android میں View کی ایک وصف جو TalkBack کے لیے متن کی وضاحت سیٹ کرتی ہے۔ اس کے بغیر، TalkBack «غیر لیبل شدہ» کہتا ہے یا کلاس کا نام (ImageView, Button) پڑھتا ہے۔ یہ XML میں android:contentDescription="@string/desc" یا کوڈ میں view.contentDescription = "متن" کے ذریعے سیٹ کیا جاتا ہے۔ آرائشی تصاویر کے لیے، contentDescription=@null استعمال کریں۔
WCAG 2.1 لیول AA کے مطابق: عام متن کے لیے 4.5:1 اور بڑے متن (18pt یا 14pt bold سے) کے لیے 3:1۔ لیول AAA: عام کے لیے 7:1 اور بڑے کے لیے 4.5:1۔ دونوں تھیمز (ہلکے/گہرے) میں کنٹراسٹ چیک کریں۔ Google کے مطابق کنٹراسٹ کی خلاف ورزی موبائل ایپس میں سب سے عام قابلیت رسائی کا مسئلہ ہے۔
ہاں، Apple تمام ایپلیکیشنز کے لیے Dynamic Type کی سفارش کرتا ہے۔ صارف ترتیبات میں متن کا سائز مقرر کرتا ہے۔ ڈویلپر UIFontMetrics.scaledFont استعمال کرتے ہیں — فونٹ خود بخود پیمائش کرتا ہے۔ Dynamic Type کے بغیر، کم بینائی والے صارفین متن نہیں پڑھ سکتے۔ iOS App Store کی نگرانی کے دوران خود بخود Dynamic Type کی جانچ کرتا ہے۔
WCAG (Web Content Accessibility Guidelines) — W3C کا بین الاقوامی مواد کی قابلیت رسائی کا معیار۔ ورژن 2.1 (2018) موبائل ایپس کے لیے معیارات شامل کرتا ہے: کنٹراسٹ، ٹچ ایریا کا سائز (44×44pt)، اسکرین ریڈر کی معاونت، اشاروں کے متبادل اور کیپشنز۔ لیول AA App Store اور Google Play پر شائع کرنے کے لیے کم سے کم معیار ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں