为什么您的应用程序需要可访问性

方便的导航,直观的界面,只需单击几下即可下订单-每天,我们都会考虑到他们的愿望和痛苦,简化应用程序客户的生活。 由于此过程中缺少必要的分析,因此我们错过了许多潜在健康用户的要求,这些用户由于健康原因而无法使用移动服务,这仅仅是因为您没有目的地 或关注可访问性问题。 Dodo Pizza的员工在解码新版AppsCast时告诉我们,如何使您的应用程序适合视障人士使用。



Alexei Kudryavtsev:今天,我们与来自Dodo Pizza的两位嘉宾Mikhail Rubanov( akaDuality )和Armen Khatayan一起讨论了移动应用程序的可用性。 伙计们,请告诉我们更多有关您自己的信息。

Mikhail Rubanov:我是我们主要披萨订购应用程序的iOS程序员。 我的目标是开发服务的前端部分,实现卓越的技术,如果没有VoiceOver支持和应用程序可用性的实现,这是不可能的。

Armen Khatayan:对我来说,可访问性这个话题特别接近,因为我在一所技术大学学习时失去了视力。
在某个时候,我意识到如果人们不打算通过应用程序的可用性来改善这种情况,那么您需要自己推广此问题并帮助解决它。
我开始熟悉各种应用程序,对其进行测试并将发现的缺陷发送给公司。

渡渡鸟披萨有一个有趣的故事。 他们以电报的形式发布了CMAN游戏,结果,我设法来到公司办公室与开发人员交谈,并在受邀接受采访之后。 现在,我处理可访问性问题,测试通用访问权限,制定测试计划,收集缺点以及为用户提供技术支持。

辅助功能介绍


Alexei Kudryavtsev:让我们首先确定什么是可访问性。

Mikhail Rubanov:辅助功能有不同的类型。 我们需要用两只手玩很多游戏,如果您弄伤了手,则该游戏将不再可用。 极端情况是听力,视力和活动能力下降。 在这种情况下,可以对应用程序进行调整。

Alexei Kudryavtsev:这与可用性有多少不同?
Armen Khatayan:可用性是界面的可用性。 可访问性-如有限制,可以使用界面。 内部可访问性可能是可用性。
Mikhail Rubanov:应用程序适应有多个阶段。 第一阶段假设应用程序到处都坏了,您只能进入并重新启动脚本。 稍作修改后,您可以浏览应用程序到目标操作,虽然可以执行该操作,但是过程本身很不方便。 最后一步是针对性最强的动作的改编,同时要考虑舒适性和使用速度。

Alexei Kudryavtsev:对于有哪些限制的人,您需要适应应用程序吗?

Armen Khatayan:限制分为功能性和精神性。 视力,听力,活动能力受损。 有精神的人暗示着对精神的侵犯,即有能力充分感知世界。 这两种限制的解决方案完全不同。

Mikhail Rubanov:我将举几个例子。 VoiceOver既适合盲人也适合运动技能受损的人,例如Stalingulag或Stephen Hawking。 在这种情况下,VoiceOver可帮助您专注于特定元素,激活它们并使用特殊设备与整个应用程序进行交互。

另一个例子。 我们在车里雅宾斯克州的一家比萨店雇用有听力障碍的人。 在我们的工作流程中,语音助手会在跟踪器上发出新比萨的声音,但是这种声音信号不适用于此类员工,并且为了避免错过订单,他们必须在平板电脑上花费更多的时间。 对于他们来说,解决该问题的绝佳方法是在订单出现时打开灯泡。

关于认知问题。 在iOS 7发行期​​间,桌面上的背景开始根据加速度计移动,并且许多人写道他们感到晕车。 然后是一个运动设置,它允许您减少屏幕的运动,包括动画的数量。 例如,这对于癫痫患者有用。

应用程序可用性问题


Alexei Kudryavtsev:人们在使用应用程序时遇到什么问题?

Armen Khatayan:有很多问题。 通常在应用程序中按钮未签名,您必须随机戳一下,检查它是什么。 如果按钮具有背景图像,则情况将得到简化,然后VoiceOver会继承其名称,并且会英语,您可以猜测元素的用途。

该按钮可能根本不可用。 如果开发人员在某个“视图”(例如图片)上单击了某个单击,然后以这种方式处理该单击,则使用我的VoiceOver,我将无法单击它。

Mikhail Rubanov:当尝试制作一个Messenger并将对话的开始位置放在屏幕底部时,通常将收藏品和表格倒置,然后将单元格倒转。 看起来一切正常,但是通过VoiceOver中的这种操作,滚动手势会上下颠倒。

碰巧是要显示一个新屏幕,而不是使用控制器来实现过渡,而是添加一个View,但是它们不会在其上挂上firstResponder。 结果,View完全无法访问,并且由于无法专注于此,因此整个脚本都将关闭。

Alexei Kudryavtsev:市场上应用程序的可用性是否正在改善? 还有更多吗?

Armen Khatayan:我是这样认为的。
为了提供更多可用的应用程序,您需要询问它的用户,或者需要已经了解其文化的开发人员应该将一部分开发时间用于可访问性。
例如,在美国,有《美国残疾人法案》 (ADA) ,根据该法案 ,所有公司,尤其是像Google和Facebook这样的大公司,都必须根据所有类别的可访问性来设计产品。 不遵守该法律将使美国人提起诉讼。

Alexei Kudryavtsev:这个问题在其他国家和俄罗斯有何规定?

Armen Khatayan:在同一美国,有Web Content Accessibility Guidelines ,它有助于开发可访问的产品。 在俄罗斯,这本质上仍是建议性的,但人们认为,社会和国家都在努力使残疾人的生活更加便利。 例如,最近有消息称,我们有一个供轮椅使用者停放并配备升降机的围场。

适应应用程序的先决条件


Alexei Kudryavtsev:在Dodo Pizza中如何开始进行可访问性工作?

米哈伊尔·鲁巴诺夫(Mikhail Rubanov):一年前,Sberbank对其应用程序进行了修改,并开始向大众推广这一想法。 盲人Anatoly Popko拜访了他们,他盲目地普及了这样的想法:没有比现在更好的盲人了,因为智能手机已经成为更好的帮助来源。 我在他的参与下观看了视频,并意识到尽管我可以建立良好的界面,但我的决定对某些人没有用。
当我们看到98%的崩溃率时,无法下订单的人开始非常担心我们。 同时,有些人根本无法使用我们的应用程序,但是没有人提供有关它的分析。
自尊心受伤,我去了解框架。 事实证明,有关该主题的材料很少,而且它们都是肤浅的。 我在晚上的星期五将自己埋葬了几个小时,我在应用程序周围走来走去,试图修复某些问题。 从简单的事情开始-为带有图片的按钮添加标题,最后以不可用的屏幕结束。 经过一个月的沉浸,我准备了有关可访问性的演示文稿,我们的产品看到了该演示文稿,意识到了问题所在,并为技术的自由发展和框架的适应开了绿灯。 三个月前,Armen出现在我们的团队中,这极大地改善了应用程序。

丹尼尔·波波夫(Daniil Popov):一个很酷的类比,就是崩溃率。 当我们有一半的用户遭受崩溃时,我们会处理此问题,而当有一半的用户根本无法使用该应用程序时,我们甚至都不知道。
结论是合乎逻辑的:考虑所有可能使用您的应用程序的人群。
Alexei Kudryavtsev:您有关于此类用户数量的分析吗?

米哈伊尔·鲁巴诺夫(Mikhail Rubanov):通用分析存在一个问题,因为没有关于俄罗斯和独联体地区有多少盲人的明确统计数据。 您可以独立计算在设备上启用VoiceOver的用户数。 UIAccessibility类中有一个isVoiceOverRunning方法,可以将其设置为运行应用程序。

Alexei Kudryavtsev:在设法将想法卖给管理层之前,您对应用程序进行了多少修改?

Mikhail Rubanov:辅助功能主题与公司价值观相吻合很有帮助: “披萨是假期”,“每个人都披萨”。 这个想法给开发人员,产品留下了深刻的印象,并没有花费很多时间和金钱。

实施计划可能非常简单:获取主要方案并查看反应如何。 盲人有一个强大的社区,有一些小组讨论应用程序并与之交互。 我们没有通过发行说明来宣布我们的改编,社交网络中的人们自己开始撰写有关该应用程序的信息,信息是通过口耳相传的。 这就是钱。

Armen Khatayan:最初,可访问性被认为是慈善事业。 是否有必要分配时间和资源,尚不清楚这将带来什么好处。 随之而来的理解是,盲人用户的钱与盲人用户的钱完全相同。
无论谁买比萨饼,重要的是要有机会这样做。

与VoiceOver的互动


Daniil Popov:让我们来谈谈技术部分。 什么是VoiceOver,它如何运作?

Armen Khatayan: VoiceOver以音频格式提供视觉信息。 他说出了界面元素上的元信息,甚至可能是图形上无法访问的。

有几种启用VoiceOver的方法。 最简单的方法是用短语“ Siri,打开VoiceOver”询问Siri。 您可以通过“辅助功能”项中的设置并三按“主页”按钮或“锁定”按钮(在没有“主页”按钮的较旧设备上)来激活或关闭VoiceOver。 接通电源后,控制设备的方式将发生变化:只需触摸一下屏幕,就可以说出位于屏幕此部分的内容。 通过双击激活元素(单击按钮或其他目标动作); 要滚动,您需要使用三个手指。

Daniil Popov:您是否在应用程序的Android版本中使用辅助功能? 平台之间匹配多少功能?

Armen Khatayan: Android拥有自己的辅助功能服务。 “话语提示”负责视觉。 该功能与VoiceOver相同,尽管碰巧在Android中某些功能比在iOS中更好。 到目前为止,我们的Android应用程序没有足够的时间,但是很快我们将开始适应。

Daniil Popov:在应用程序中经常会出现某些界面元素被阻塞的情况,因为没有在输入字段中输入值。 VoiceOver如何使视障用户知道该按钮已被锁定,并且需要采取其他措施才能将其解锁?

Mikhail Rubanov: iOS中有一个Accessibility Traits Collection-几种设置,可让您更改与元素交互的方式。 您可以使用元素的名称,值对其进行签名,然后放下其中一个属性。 有一个值为selected的值可处理列表,有一个值 禁用表示一个不可访问的项目。 有一个有趣的可调特征,适用于各种滑块,步进器,当您可以使用向上/向下滑动来更改元素的值时,它将再次显示。

有一个选项可以直接启用交互,例如,您可以在面板上画图以便在餐厅的支票上留下签名。 多媒体有多种设置:按下按钮后,声音或电影将立即开始播放,并且VoiceOver应该关闭,直到再次开始与屏幕交互为止。
无需用拐杖围栏:设置设置,系统本身将以正确的语调说出所有内容。

使用VoiceOver的功能


Alexei Kudryavtsev:您说过使用可访问性会改变意识,并不像乍看起来那样简单。 开发人员沉浸在过程中应该面对什么?

Mikhail Rubanov:如果我们谈论使用VoiceOver的困难,那么我们发现我们需要发音一些元素。 例如,需要通过发布可访问性通知来讨论应用程序中弹出消息的外观(不是标准推送,而是有关下订单的面板消息)。 我们面对这样一个事实,当您按下按钮时,VoiceOver会中断我们的文本并发音该按钮的名称。 我们解决了这个问题:之后将所有内容包装在分派中,将其移动了100毫秒并独立杀死了VoiceOver。

主要困难在于,尝试在Internet上找到解决方案时,其他人提供的方法几乎总是无效。

我们从拐杖上清除了应用程序本身。 使用辅助功能时,正确显示控制器很重要。 如前所述,在某些项目中,当创建新屏幕时,他们只是向层次结构中添加了一个新的View,而不能确保firstResponder正常工作。 结果,VoiceOver没有看到她。 我们将其重新分配给正常的控制器,并立即进行了所有维修。

我们的设计系统具有用于更改大小,数量以及在将控件划分为几个按钮之前的控件。 例如,为数量步进器分配了“减”,“加”,商品的数量和总价按钮。 我们将所有内容组合到一个控件中。 现在,您可以通过垂直滑动来增加数量,并立即显示新价格。 此控件在应用程序的多个位置使用,因此一种解决方案能够一次改善多个屏幕。

Daniil Popov:在Instagram上,大多数应用程序都与图像相关。 VoiceOver如何处理此内容?

Mikhail Rubanov: Instagram建议上传照片为盲人签名。 此外,该服务已经从简单地显示历史记录和图片伴随而来。 另外,现在您可以在那里使用带有声音的视频。 iPhone还试图识别照片和面孔,报告照片中的内容以及其清晰度。

技术在不断发展。 例如,在Netflix上,您可以观看带有特殊字幕的电影,这些字幕还可以告诉屏幕上正在发生的事情。

丹尼尔·波波夫(Daniil Popov):如何保持平衡? 对于普通用户,我希望显示具有平滑过渡,3D效果的精美动画,但我也希望视障人士能够充分使用该应用程序。

Mikhail Rubanov:如果我们谈论资源优化,则iOS中的许多方法都通过了animation参数 您可以依赖它,也可以自己设置它,例如,通过isVoiceOverRunning关闭动画。 在这种情况下,您可以对功能进行测试,测试和解决。 VoiceOver具有许多不同的技术,可让您调整内容。 甚至可以控制发声声音的语调。 您只需要学习框架。

丹尼尔·波波夫(Daniil Popov):我真的不喜欢戳屏幕上的每个按钮。 Facebook有数十个这样的按钮,过程变成了嘲弄。 有更方便的机制吗?

Armen Khatayan:盲人用户界面与图形界面完全不同。 VoiceOver能够以两种方式学习界面:顺序学习和随机学习。 如果按顺序进行研究,则光标会在层次结构中指定的各个元素中移动。 向右滑动可移动至下一个元素,向左滑动-可移动至上一个元素。 通过向右滑动,您可以完全遍历整个界面并了解哪些地方不可用。

另外,您也可以在屏幕上四处行驶,查看位置。 以我的经验,大多数盲人都使用顺序导航,因为这样做更方便。

例如,在Facebook上,有一个带有出版物的新闻提要,每个新闻都有按钮,例如共享,照片,链接。 Facebook将每个帖子设为一个单独的项目。 与该出版物的动作相关的所有操作均在自定义动作中进行。 向右滑动可删除单元格或消息,垂直滑动可选择此操作。 在出版物中,垂直滑动可帮助您浏览所有动作:发表评论,分享,查看详细信息。

Mikhail Rubanov:在技​​术方面,VoiceOver不会涉及业务功能,甚至可以帮助您了解如何制作它们。 例如,许多人正在转向设计系统,在该系统中,所有控件均应最小化,并且仅使用它们。 使用基本控件可以确保大多数屏幕的可用性。 在转换时锯掉拐杖并正确显示控制器可提供VoiceOver支持,并使应用程序更清洁。

测试应用程序很容易。 选择一个成功的场景,然后尝试继续前进。 您会看到很多问题。 通过适应一个完全成功的方案,您将解决大多数问题。 错误和非标准行为的场景将仍然存在,并且已经需要专门从事此工作的人员进行咨询。

Armen在这方面为我们提供了帮助,尽管我们确信我们的应用程序适应性很好,但他还是说服了我们。

Armen Khatayan:是的,一个在日常生活中面临限制的人将提供更多有关此的信息。
VoiceOver具有可帮助您与盲人亲近的功能。 您需要点击屏幕三下,它会关闭。 通过这种简单的方法,您可以更轻松地了解盲人。
适应时,重要的是在签署签名时要遵守某些规则。 如果是按钮,则无需再次重复该按钮。 该按钮只能执行一个操作。 例如,“创建便笺”而不是“创建新便笺”。 在添加标签之前,请考虑它是否确实反映了其本质。

米哈伊尔·鲁巴诺夫(Mikhail Rubanov):如果有一名技术作家,可以很轻松地在公司中解决此问题。

顺便说一句,WWDC上的Apple在MacOS上展示了一种芯片,当您可以使用语音与操作系统配合使用时:请她在屏幕上显示所有签名,数字并说出需要修改的签名。 如果您的应用程序已经可以在VoiceOver上使用,那么创新将在重新编译后自动开始。 不幸的是,到目前为止,这仅适用于美国和英语。

Alexei Kudryavtsev:除了VoiceOver之外,还有哪些工具可以帮助有其他健康限制的人使用应用程序?

Mikhail Rubanov:有DymanicType,可用于设置字体大小。 这提高了iOS开发人员编写控件的能力,因为当他们告诉控件可以增加3-4倍时,需要发明其他解决方案,而不是水平滚动单元格,而是创建一个下拉列表并对其进行调整。

有一些选项,例如重新使用透明性或减少运动-适应视力障碍者或有障碍者,但我们尚未达到。 在其他技术方面,我们还没有挖掘。

Alexei Kudryavtsev:苹果的可访问性API有多好? 有任何缺陷吗?

米哈伊尔·鲁巴诺夫(Mikhail Rubanov):她很酷,让我热衷于编写控件和过渡。 有一个相当复杂的调试,因为如果您的按钮不可用或它们的顺序有所不同,则只能通过猜测其工作方式来修复它。 它使我想到,如果我具有带有视图的视图层次结构以及从视图中提取标签的能力,我自己会写出这样的技术。

Alexei Kudryavtsev:开发人员通常很难建立正确的层次结构。 您如何处理?

: . , , , , Facebook .

action, , , actions VoiceOver.

, , , «» — , . , accessibility value — . . , , .

. accessibility elements . , . — , isAccessibilityElement == false ., isAccessibilityElement == true, VoiceOver . .

Accessibility?


: , , ?

: , , , . , . .

, , , .

. . : Android , , , .

, , . «button», «button», «button». , - , , . «button» .

: , flow accessibility. , flow ? ?

: , , VoiceOver .

: VoiceOver ?

: , UI-, . VoiceOver, UI-. , accessibility value, accessibility label unit-. . , UI- #if UITEST .

: ?

: , , . , VoiceOver , . , «, , …» . .

: . , VoiceOver, . «» , . , .

Best practices


: accessibility?

: UIAccessibility.h . , . Apple : , , . , .

: WWDC ?

: , accessibility. , .

: , ?

: Applevis : , .

- , , . , , « » — .
. , : Accessibility Inspector Xcode, , .

-, .

-, accessibility, .
: Accessibility — - , . , iOS . , .

. . , . , . , , .

, , 21-22 - AppsConf. iOS- accessibility Juno.

AppsCast , , SoundCloud , .

Source: https://habr.com/ru/post/zh-CN466629/


All Articles