Accessibility (a11y) — практиката за създаване на приложения, които могат да се използват от хора с увреждания. По данни на Световната здравна организация над 1,3 милиарда души (16% от населението) живеят с някаква форма на увреждане. СЗО (доклад 2024) подчертава, че цифровата достъпност става критично важна. Нека разгледаме как да осигурим достъпност на iOS и Android и какви стандарти съществуват.
Основни точки
Accessibility (съкратено a11y — буква a + 11 букви + y) — свойството на продукта да бъде използваем от хора с увреждания. В контекста на мобилните приложения това означава: поддръжка на екранни четци (VoiceOver, TalkBack), подходящ размер на текста, висок контраст, правилен ред на фокуса за навигация с клавиатура и липса на анимирани елементи, причиняващи замайване.
Приобщаването не е само етично, но и правно задължение. Много страни имат закони за цифрова достъпност: ADA (САЩ), Раздел 508, European Accessibility Act (ЕС, задължително за приложения от 2025 г.). Според Business Disability Forum компаниите, които инвестират в достъпност, увеличават аудиторията си с 15–20% и намаляват правните рискове.
В IT Sectr проверяваме достъпността на всеки етап от разработката. Нашият опит показва: отстраняването на проблеми с достъпността на етапа на проектиране струва 10 пъти по-малко, отколкото след пускането. Достъпността не е функция, а основно изискване за съвременно приложение.
Екосистемата на Apple предлага мощни инструменти за достъпност. VoiceOver е вграден екранен четец, който озвучава всичко, което се случва на екрана. Потребителят управлява устройството с жестове: плъзгане надясно — следващ елемент, плъзгане наляво — предишен елемент, двойно докосване — активиране.
Accessibility Label е текстът, който VoiceOver чете за даден елемент. По подразбиране iOS използва текста на бутона или етикета, но за икони и графични елементи трябва изрично да зададете етикета. Accessibility Trait — свойство, описващо типа на елемента: button (бутон), header (заглавие), link (връзка), image (изображение). Правилните traits помагат на потребителя да разбере как да взаимодейства с елемента.
VoiceOver поддържа над 40 езика и работи на всички устройства на Apple. За разработчика основното нещо е да зададе правилните accessibilityLabel и accessibilityTraits за всеки елемент от интерфейса. Ако даден елемент не трябва да бъде достъпен (декоративно изображение), задайте isAccessibilityElement = false.
// Swift — настройка на достъпност за бутон
let shareButton = UIButton()
shareButton.setImage(UIImage(named: "share-icon"), for: .normal)
shareButton.accessibilityLabel = "Споделете тази статия"
shareButton.accessibilityHint = "Отваря диалогов прозорец за избор на метод за изпращане"
shareButton.accessibilityTraits = .button
// SwiftUI — още по-лесно
struct ShareButtonView: View {
var body: some View {
Button(action: share) {
Image(systemName: "square.and.arrow.up")
}
.accessibilityLabel("Споделяне")
.accessibilityHint("Отваря менюто за споделяне")
}
}
Кодът показва настройка на достъпност за бутон без текст (само икона). AccessibilityLabel е това, което потребителят ще чуе. AccessibilityHint — допълнителен съвет за резултата от действието. Не използвайте фрази като «бутон за» в етикета — Trait вече показва, че това е бутон.
TalkBack е екранният четец на Google за Android, част от пакета Android Accessibility Suite. Подобно на VoiceOver, той озвучава елементите на интерфейса и се управлява с жестове. TalkBack поддържа над 100 езика и работи на всички устройства с Google Play Services.
Content Description — еквивалентът на accessibilityLabel на Android. Задава се чрез атрибута android:contentDescription в XML или чрез метода setContentDescription() в код. За елементи, които не могат да бъдат фокусирани (декоративно ImageView), използвайте importantForAccessibility="no".
Focus Order (ред на фокуса) — последователността, в която TalkBack се движи между елементите при плъзгане. По подразбиране Android използва реда на елементите в оформлението, но може да се промени чрез атрибутите accessibilityTraversalBefore и accessibilityTraversalAfter. Това е важно за сложни екрани с персонализирани компоненти.
В IT Sectr проверяваме Focus Order на всеки екран. Грешките в реда на фокуса са сред най-честите проблеми с достъпността. Например, ако след заглавие потребителят отиде към коментари вместо към текста на статията — това е бъг в достъпността.
WCAG (Web Content Accessibility Guidelines) — международен стандарт за достъпност, разработен от W3C. Настоящата версия е WCAG 2.2 (2023). Стандартът е разделен на 4 принципа: Perceivable (възприемаем), Operable (оперативен), Understandable (разбираем), Robust (стабилен) — съкращение POUR.
Нива на WCAG: A (минимално), AA (средно, задължително по закон в ЕС), AAA (максимално). За мобилни приложения ниво AA е достатъчно: контраст на текста най-малко 4.5:1, поддръжка на екранни четци, минимален размер на целта 44x44 пиксела, субтитри за видео.
Ниво A — основни изисквания: текстови алтернативи за изображения, управление с клавиатура, контраст най-малко 3:1. Ниво AA — средно: контраст 4.5:1, поддръжка на мащабиране до 200%, правилни заглавия и етикети. Ниво AAA — високо: контраст 7:1, жестомимичен език за видео, пълно гласово управление. На практика повечето компании се целят в AA.
| Параметър | iOS | Android |
|---|---|---|
| Екранен четец | VoiceOver | TalkBack |
| Етикет на елемент | accessibilityLabel | android:contentDescription |
| Тип на елемент | accessibilityTraits | accessibilityRole (Compose), важност на фокуса |
| Ред на фокуса | Автоматичен (може да се промени) | accessibilityTraversalBefore/After |
| Мащабиране на текст | Dynamic Type (UIFontMetrics) | sp (scale-independent pixels) |
| Намаляване на движението | UIAccessibility.isReduceMotionEnabled | Settings.Global.getFloat(... ANIMATOR_DURATION_SCALE) |
Таблица 2. Сравнение на API за достъпност на iOS и Android. Въпреки различните имена, концепциите са идентични: етикет, тип, ред на фокуса и поддръжка на адаптиране на текст.
Тестването на достъпност е проверка на приложението за съответствие със стандартите WCAG и правилна работа с екранни четци. Минимален набор от тестове: включете VoiceOver/TalkBack и навигирайте през всички екрани на приложението. Слушайте, за да проверите, че всички елементи се озвучават, редът на фокуса е логичен, а неподходящите елементи (декоративни) се игнорират.
Автоматизирани инструменти: Xcode Accessibility Inspector (одит в Xcode за iOS), Android Accessibility Scanner (сканира екрана и открива проблеми), Axe DevTools, WAVE. Тези инструменти проверяват контраста, размера на целта, наличието на етикети и други параметри.
В IT Sectr извършваме преглед на достъпността преди всяко пускане. Процесът включва: автоматизиран одит (Accessibility Inspector), ръчно тестване с VoiceOver и TalkBack, проверка на контраст и мащабиране на текст. Записваме проблемите в Jira и ги възлагаме на спринт. Това ни позволява да поддържаме ниво AA на WCAG във всички проекти.
Често задавани въпроси
Настройки → Достъпност → VoiceOver. Или натиснете три пъти страничния бутон (или бутона Home) с включен пряк път за достъпност. За бързо включване използвайте Siri: «Включи VoiceOver». На Android TalkBack се включва в Настройки → Достъпност → TalkBack.
За съответствие със законодателството на ЕС (European Accessibility Act от 2025) и САЩ (ADA) се изисква ниво AA. Това означава: контраст 4.5:1, всички елементи имат етикети, размер на целта най-малко 44x44 пиксела, поддръжка на екранни четци, субтитри за видео.
Да. Достъпността помага на всички: възрастни хора, потребители в слънчев ден, родители, държащи бебе (с една ръка). Освен това е законово изискване в много страни. Приобщаването разширява аудиторията и подобрява потребителското изживяване за всички.
Използвайте тези инструменти: WebAIM Contrast Checker (онлайн), Stark за Figma/Sketch. За WCAG AA минималното съотношение е 4.5:1 за нормален текст и 3:1 за голям текст (18px и повече). За AAA — съответно 7:1 и 4.5:1.
Резюме
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.