Navegação conveniente, uma interface intuitiva, fazendo um pedido em alguns cliques - todos os dias simplificamos a vida dos clientes de nossos aplicativos, levando em consideração seus desejos e dores. Devido à falta das análises necessárias nesse processo, perdemos as solicitações de uma grande categoria de usuários em potencial com restrições de saúde que não podem usar serviços móveis simplesmente porque você não está destinado ou se concentra em questões de acessibilidade. Como tornar seu aplicativo confortável para pessoas com deficiência visual, informam os funcionários da Dodo Pizza ao decodificar o novo lançamento do AppsCast .
Alexei Kudryavtsev: Hoje estamos falando sobre a disponibilidade de aplicativos móveis com dois convidados da
Dodo Pizza de uma
só vez - Mikhail Rubanov (
akaDuality ) e Armen Khatayan. Gente, conte-nos mais sobre você.
Mikhail Rubanov: Eu sou o programador iOS do nosso principal aplicativo de pedidos de pizza. Meu objetivo é desenvolver a parte front-end do serviço, alcançando excelência técnica, o que é impossível sem o suporte do VoiceOver e a implementação da disponibilidade de aplicativos.
Armen Khatayan: Para mim, o tópico Acessibilidade é especialmente próximo, pois perdi a visão enquanto estudava em uma universidade técnica.
Em algum momento, percebi que, se as pessoas não estão tentando melhorar a situação com a disponibilidade de aplicativos, você precisa popularizar esse problema e ajudar a resolvê-lo.
Comecei a me familiarizar com várias aplicações, testá-las e enviar os defeitos encontrados para a empresa.
Uma história interessante saiu com a Dodo Pizza. Os caras lançaram o jogo
CMAN , disponível em um telegrama, de acordo com os resultados dos quais consegui ir ao escritório da empresa para conversar com os desenvolvedores e depois fui convidado para uma entrevista. Agora, trato de questões de acessibilidade, testando o acesso universal, elaborando planos de teste, coletando deficiências e suporte técnico para os usuários.
Introdução à acessibilidade
Alexei Kudryavtsev: Vamos primeiro determinar o que é acessibilidade.
Mikhail Rubanov: Existem diferentes tipos de acessibilidade. Precisamos jogar muitos jogos com as duas mãos e, se você machucar a mão, o jogo deixa de estar disponível. Um caso extremo é a perda de audição, visão e mobilidade. Para tais situações, a adaptação do aplicativo é possível.
Alexei Kudryavtsev: Quanto isso difere da usabilidade?
Armen Khatayan: Usabilidade é a usabilidade da interface. Acessibilidade - a capacidade de usar a interface se houver restrições. Acessibilidade interna pode ser usabilidade.
Mikhail Rubanov: Existem vários estágios de adaptação de aplicativos. O primeiro estágio supõe que o aplicativo esteja quebrado em todos os lugares e você só pode entrar e iniciar o script novamente. Após uma pequena adaptação, você pode passar pelo aplicativo para a ação de destino, enquanto a execução da ação é possível, mas o processo em si é inconveniente. A última etapa é a adaptação da ação mais direcionada, levando em consideração o conforto e a velocidade de uso.
Alexei Kudryavtsev: Para pessoas com quais limitações você precisa adaptar os aplicativos?
Armen Khatayan: As restrições são divididas em funcional e mental. Comprometimento funcional da visão, audição, mobilidade. Os mentais implicam uma violação da psique, a capacidade de perceber adequadamente o mundo. As soluções para essas duas categorias de restrições são completamente diferentes.
Mikhail Rubanov: Vou dar alguns exemplos. O VoiceOver pode ser adequado para cegos e pessoas com habilidades motoras prejudicadas, como, por exemplo,
Stalingulag ou Stephen Hawking. Nesse caso, o VoiceOver ajuda você a se concentrar em elementos específicos, ativá-los e interagir com todo o aplicativo usando um dispositivo especial.
Outro exemplo Uma de nossas pizzarias em Chelyabinsk emprega pessoas com deficiência auditiva. Em nosso fluxo de trabalho, o assistente de voz dá voz ao recebimento de uma nova pizza no rastreador, mas esse sinal sonoro não está disponível para esses funcionários e, para não perder o pedido, eles precisam gastar mais tempo no tablet. Para eles, uma excelente solução para o problema é uma lâmpada que acende quando o pedido aparece.
Sobre questões cognitivas. Durante o lançamento do iOS 7, o fundo da área de trabalho começou a se mover de acordo com o acelerômetro e muitos escreveram que estavam com problemas de movimento. Depois, havia uma configuração de movimento, que permite reduzir o movimento da tela, incluindo o número de animações. Isso é útil, por exemplo, para quem sofre de epilepsia.
Problemas de disponibilidade de aplicativos
Alexei Kudryavtsev: Que problemas as pessoas enfrentam com os aplicativos?
Armen Khatayan: Existem muitos problemas. Muitas vezes, os botões do aplicativo não são assinados e você deve cutucar aleatoriamente, verifique o que é. A situação é simplificada se o botão tiver uma imagem de plano de fundo, o VoiceOver herdará seu nome e, conhecendo o inglês, você poderá adivinhar a finalidade do elemento.
O botão pode não estar disponível. Se um desenvolvedor clica em uma Visualização, por exemplo, uma imagem e processa o clique, não posso clicar nela com o VoiceOver.
Mikhail Rubanov: Ao tentar criar um messenger e posicionar o início do diálogo na parte inferior da tela, as coleções e as tabelas geralmente são viradas de cabeça para baixo e as células são revertidas. Parece que tudo funciona, mas com essa operação no VoiceOver, o gesto de rolagem é invertido.
Acontece que, para exibir uma nova tela, em vez de implementar a transição usando controladores, eles adicionam uma View, mas não penduram firstResponder nela. Como resultado, o View é completamente inacessível e, como é impossível focar nele, o script inteiro é fechado.
Alexei Kudryavtsev: A situação com a disponibilidade de aplicativos no mercado está melhorando? Existe mais deles?
Armen Khatayan: Eu acho que sim.
Para tornar os aplicativos disponíveis mais, você precisa de usuários que perguntem sobre isso ou desenvolvedores cuja cultura já entenda que parte do tempo de desenvolvimento deve ser gasta em acessibilidade.
Nos EUA, por exemplo, existe a
Lei dos Americanos com Deficiências (ADA) , segundo a qual todas as empresas, especialmente corporações gigantes como Google e Facebook, são obrigadas a criar produtos levando em consideração a acessibilidade para todas as categorias. O não cumprimento desta lei permite que os americanos processem empresas.
Alexei Kudryavtsev: Como essa questão é regulamentada em outros países e na Rússia?
Armen Khatayan: Na mesma América, existem
Diretrizes de acessibilidade de conteúdo da Web , que ajudam a desenvolver produtos acessíveis. Na Rússia, isso ainda é de natureza consultiva, mas acredita-se que a sociedade e o estado estejam tentando tornar a vida das pessoas com deficiência mais acessível. Por exemplo, recentemente houve notícias de que tínhamos um piquete para pessoas em cadeiras de rodas equipadas com elevador.
Pré-requisitos para adaptar aplicativos
Alexei Kudryavtsev: Como começou o trabalho de acessibilidade na Dodo Pizza?
Mikhail Rubanov: Há um ano, o Sberbank adaptou sua aplicação e começou a promover essa idéia para as massas. Eles foram visitados por Anatoly Popko, um cego que popularizou a idéia de que não há melhor momento para ficar cego do que agora, porque um smartphone se tornou uma melhor fonte de ajuda. Eu assisti o vídeo com a participação dele e percebi que, embora eu possa fazer boas interfaces, minhas decisões não funcionam para um determinado número de pessoas.
Quando vemos uma taxa de falhas de 98%, as pessoas que não podem fazer um pedido começam a nos preocupar muito. Ao mesmo tempo, existem pessoas que não podem usar nosso aplicativo, mas ninguém fornece análises sobre ele.
A auto-estima foi ferida e eu fui entender a estrutura. Verificou-se que havia poucos materiais sobre o assunto e eles foram escritos superficialmente. Enterrei-me, às sextas-feiras à noite, durante algumas horas, andei pelo aplicativo e tentei consertar alguma coisa. Começou com coisas simples - fez legendas para botões com fotos e terminou com telas que não estavam disponíveis. Após um mês de imersão, preparei uma apresentação sobre acessibilidade, que nossos produtos viram, percebeu o problema e deu uma luz verde ao livre desenvolvimento de tecnologia, adaptação da estrutura. Há três meses, Armen apareceu em nossa equipe e isso ajudou muito a melhorar o aplicativo.
Daniil Popov: Uma analogia legal com a taxa de falhas. Quando temos meio por cento dos usuários que sofrem de falhas, resolvemos isso e, quando meio por cento não pode usar o aplicativo, nem o sabemos.
A conclusão é lógica: pense em todas as categorias de pessoas que poderiam usar seu aplicativo.
Alexei Kudryavtsev: Você tem análises sobre o número de usuários?
Mikhail Rubanov: Há um problema de análise geral, pois não há estatísticas claras sobre quantas pessoas cegas existem em geral na Rússia e na CEI. Você pode calcular independentemente o número de usuários que têm o VoiceOver ativado nos dispositivos. Existe um método isVoiceOverRunning na classe UIAccessibility, que pode ser configurada para executar o aplicativo.
Alexei Kudryavtsev: Quanto você adaptou o aplicativo antes de conseguir vender a ideia para a gerência?
Mikhail Rubanov: Ajudou o fato de o tema acessibilidade coincidir com os valores da empresa: "Pizza é um feriado", "Pizza para todos". A ideia impressionou os desenvolvedores, o produto e não demorou muito tempo e dinheiro.
O plano de implementação pode ser bastante simples: obtenha o cenário principal e veja qual será a reação. Os cegos têm uma comunidade forte, existem grupos onde discutem aplicações e interações com eles. Não anunciamos nossa adaptação por meio de notas de lançamento, as pessoas nas redes sociais começaram a escrever sobre o aplicativo, as informações foram distribuídas via boca a boca. Esse é o dinheiro.
Armen Khatayan: Inicialmente, a acessibilidade é percebida como caridade. É necessário alocar tempo e recursos e não está claro que benefício isso trará. Depois vem o entendimento de que o dinheiro dos usuários cegos é exatamente o mesmo que dos que enxergam.
Não importa quem compra a pizza, é importante dar a oportunidade de fazê-lo.
Interação com o VoiceOver
Daniil Popov: Vamos lidar com o componente técnico. O que é o VoiceOver e como ele funciona?
Armen Khatayan: O VoiceOver fornece informações visuais em formato de áudio. Ele expressa a meta-informação que está nos elementos da interface e, possivelmente, até graficamente inacessível.
Existem várias maneiras de ativar o VoiceOver. A maneira mais fácil é perguntar à Siri com a frase "Siri, ative o VoiceOver". Você pode ativá-lo através da configuração no item Acessibilidade e clicando três vezes no botão Início ou no botão de bloqueio (em dispositivos mais antigos onde o botão Início não está), o VoiceOver será ativado ou desativado. Depois de ligar, o modo de controlar o dispositivo muda: com um único toque na tela, o que está localizado nessa parte da tela é exibido; clicando duas vezes em um elemento é ativado (clicando em um botão ou outra ação de destino); Para rolar, você precisa usar três dedos.
Daniil Popov: Você usa acessibilidade na versão Android do aplicativo? E quantos recursos correspondem entre plataformas?
Armen Khatayan: O Android tem seus próprios serviços de acessibilidade. O TalkBack é responsável pela visão. A funcionalidade é idêntica ao VoiceOver, embora aconteça que no Android algum recurso funcione melhor do que no iOS. Até o momento, não há tempo suficiente para nosso aplicativo Android, mas em breve começaremos a nos adaptar.
Daniil Popov: Geralmente, em um aplicativo, há uma situação em que alguns elementos da interface estão bloqueados porque os valores não são inseridos nos campos de entrada. Como o VoiceOver permite que o usuário com deficiência visual saiba que o botão está bloqueado e é necessário executar outra ação para desbloqueá-lo?
Mikhail Rubanov: existe uma coleção de características de acessibilidade no iOS - várias configurações que permitem alterar a maneira como você interage com um elemento. Você pode assinar cada elemento com seu nome, valor e colocar uma das propriedades. Há um valor de
selecionado para manipular listas ou
desativado para indicar um item inacessível. Há uma característica
ajustável interessante que se aplica a vários controles deslizantes, steppers, quando você pode alterar o valor de um elemento com deslizes para cima / para baixo e ele fala novamente.
Há uma opção para ativar diretamente a interação, por exemplo, um painel no qual você pode desenhar para deixar uma assinatura em um cheque em um restaurante. Existem várias configurações para multimídia: depois de pressionar o botão, o som ou o filme começa a ser reproduzido imediatamente e o VoiceOver deve desligar até que comece a interagir novamente com a tela.
Não há necessidade de cercar muletas: defina a configuração e o próprio sistema dirá tudo com a entonação correta.
Recursos de trabalho com o VoiceOver
Alexei Kudryavtsev: Você disse que trabalhar com acessibilidade muda a consciência e não é tão simples quanto parece à primeira vista. O que o desenvolvedor deve enfrentar ao mergulhar no processo?
Mikhail Rubanov: Se falamos sobre as dificuldades de trabalhar com o VoiceOver, descobrimos que precisamos pronunciar alguns elementos. Por exemplo, a aparência de uma mensagem pop-up no aplicativo (não um push padrão, mas uma mensagem do painel sobre como fazer um pedido) precisa ser discutida por meio da notificação pós-acessibilidade. Somos confrontados com o fato de que, quando você pressiona o botão, o VoiceOver interrompe nosso texto e pronuncia o nome do botão. Resolvemos o problema: embalando tudo em expedição depois, movido por 100 milissegundos e eliminando o VoiceOver de forma independente.
A principal dificuldade é que, ao tentar encontrar uma solução, você está tentando encontrá-la na Internet, mas os métodos que outros oferecem quase sempre nem sempre funcionam.
Limpamos o próprio aplicativo de muletas. Ao trabalhar com acessibilidade, é importante mostrar os controladores corretamente. Como mencionei anteriormente, em alguns projetos, ao criar uma nova tela, eles simplesmente adicionaram uma nova exibição à hierarquia, sem garantir que o firstResponder funcionasse corretamente. Como resultado, o VoiceOver não a viu. Nós o refizemos a um controlador normal e tudo foi reparado imediatamente.
Nosso sistema de design possui controles para alterar o tamanho, a quantidade e antes de serem divididos em vários botões. Por exemplo, a quantidade stepper foi emitida com os botões "menos", "mais", a quantidade e o preço total da mercadoria. Combinamos tudo em um controle. Agora você pode aumentar a quantidade com um furto vertical e imediatamente um novo preço será revelado. Esse controle é usado em vários locais do aplicativo, portanto, uma solução foi capaz de melhorar várias telas ao mesmo tempo.
Daniil Popov: No Instagram, a maior parte do aplicativo está vinculada a imagens. Como o VoiceOver funciona com esse conteúdo?
Mikhail Rubanov: o Instagram sugere o upload de uma foto para fazer uma assinatura para os cegos. Além disso, o serviço já evoluiu de simplesmente mostrar fotos na história, acompanhadas por fotos. Além disso, agora você pode usar vídeo com som lá. O iPhone também está tentando reconhecer fotos e rostos, relata o que está na imagem, o quão clara é.
A tecnologia está evoluindo. Na Netflix, por exemplo, você pode assistir a filmes com legendas especiais que contam adicionalmente o que está acontecendo na tela.
Daniil Popov: Como manter o equilíbrio? Para usuários comuns, quero mostrar o máximo de belas animações com transições suaves, efeitos 3D, mas também quero que pessoas com deficiência visual possam usar totalmente o aplicativo.
Mikhail Rubanov: Se falamos sobre otimização de recursos, muitos métodos no iOS passam o parâmetro
animado. Você pode confiar nele ou configurá-lo você mesmo, por exemplo, desative a animação usando isVoiceOverRunning. Nesse caso, você pode cortar um recurso, testar e criar uma solução alternativa. O VoiceOver possui muitas tecnologias diferentes que permitem adaptar o conteúdo. Existe até a capacidade de controlar a entonação da voz dubladora. Você só precisa aprender a estrutura.
Daniil Popov: Eu realmente não gosto da opção de pressionar cada botão na tela. O Facebook possui dezenas desses botões, e o processo se transforma em zombaria. Existem mecanismos mais convenientes?
Armen Khatayan: A interface para o usuário cego é radicalmente diferente da gráfica. O VoiceOver pode aprender a interface de duas maneiras: sequencialmente e aleatoriamente. Se estudado sequencialmente, o cursor se move por cada elemento conforme eles são especificados na hierarquia. Deslize para a direita para o próximo elemento, deslize para a esquerda - para o anterior. Com o furto para a direita, você pode percorrer completamente toda a interface e entender onde algo não está disponível.
Como alternativa, você pode simplesmente percorrer a tela e ver onde está localizado. Na minha experiência, a maioria das pessoas cegas usa a navegação sequencial, pois é mais conveniente.
No Facebook, por exemplo, há um feed de notícias com publicações, cada uma com botões como, compartilhar, fotos, links. O Facebook transformou cada post em um item separado. Tudo relacionado às ações com esta publicação é feito na ação customizada. Deslizar para a direita exclui uma célula ou mensagem, deslizar vertical pode selecionar esta ação. Nas publicações, furtos verticais ajudam você a navegar por todas as ações: faça uma reação, compartilhe, veja informações detalhadas.
Mikhail Rubanov: Do lado técnico, o VoiceOver não
aborda os recursos de negócios, mas ajuda a entender como fazê-los. Por exemplo, muitos estão mudando para um sistema de design em que todos os controles são minimizados e somente eles são usados. Trabalhar em controles básicos permite garantir a disponibilidade da maioria das telas. Serrar muletas em caso de transições e exibir controladores corretamente fornece suporte ao VoiceOver e torna o aplicativo mais limpo.
Testar o aplicativo é fácil. Escolha um cenário de sucesso e tente caminhar nele. Você verá um grande número de problemas. Ao adaptar um cenário completo de sucesso, você resolverá a maioria dos problemas. Os cenários de erros e comportamentos não padronizados permanecerão, e a consulta de uma pessoa especializada nisso já é necessária.
Armen nos ajudou nisso e, apesar de termos certeza de que nossa aplicação estava bem adaptada, ele nos convenceu.
Armen Khatayan: Sim, uma pessoa que se depara com restrições em sua vida diária vai contar muito mais sobre isso.
O VoiceOver possui uma funcionalidade que o ajudará a se aproximar de pessoas cegas. Você precisa tocar na tela três vezes e ela será desligada. De uma maneira tão simples, você pode entender mais facilmente os cegos.
Ao se adaptar, é importante aderir a certas regras na nomeação de assinaturas. Se for um botão, não é necessário repetir mais uma vez que é um botão. Só deve haver uma ação que o botão execute. Por exemplo, "crie uma nota" em vez de "crie uma nova nota". Antes de adicionar um rótulo, considere se ele realmente reflete sua essência.
Mikhail Rubanov: Um escritor técnico, se houver, pode facilmente lidar com esse problema na empresa.
A propósito, a Apple na WWDC mostrou um chip no MacOS quando você pode trabalhar com o sistema operacional usando voz: peça a ela para mostrar todas as assinaturas na tela, número e dizer qual precisa ser adaptada. Se seu aplicativo já funcionar com o VoiceOver, a inovação será iniciada automaticamente após a recompilação. Infelizmente, até agora isso só funciona nos Estados Unidos e em inglês.
Alexei Kudryavtsev: Quais ferramentas, além do VoiceOver, ajudam pessoas com outras restrições de saúde a usar aplicativos?
Mikhail Rubanov: Existe o DymanicType que permite definir o tamanho da fonte. Isso desenvolve a competência do desenvolvedor do iOS em escrever controles, porque quando eles disseram ao controle que ele pode aumentar de 3 a 4 vezes, outras soluções precisam ser inventadas e, em vez de rolar as células horizontalmente, faça uma lista suspensa e adapte-a.
Existem opções como reduzir a transparência ou reduzir o movimento - adaptações para pessoas com deficiência visual ou para pessoas que estão deitadas, mas ainda não as alcançamos. Na direção de outras tecnologias, também não cavamos ainda.
Alexei Kudryavtsev: Quão boa é a API de acessibilidade da Apple? Existem falhas nele?
Mikhail Rubanov: Ela é bem legal e me fez
vibrar na escrita de controles e transições. Existe uma depuração bastante complicada, porque se os botões não estiverem disponíveis ou a ordem deles se tornar diferente, você poderá corrigi-lo apenas adivinhando como funciona. Ajudou-me a imaginar como eu próprio escreveria essa tecnologia se tivesse uma hierarquia de visualizações com visualizações e a capacidade de extrair um rótulo delas.
Alexei Kudryavtsev: Os desenvolvedores costumam ter dificuldade em construir a hierarquia correta. Como você lida com isso?
: . , , , , 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 , .