Noções básicas sobre os conceitos de SiriKit
Este artigo aborda os principais conceitos que serão necessários para trabalhar com o SiriKit em um aplicativo Xamarin.iOS.
Novo no iOS 10, o SiriKit permite que um aplicativo Xamarin.iOS forneça serviços acessíveis ao usuário usando a Siri e o aplicativo Mapas em um dispositivo iOS. Essa funcionalidade é fornecida em uma ou mais Extensões de Aplicativo usando as novas estruturas de interface do usuário Intents e Intents.
O SiriKit permite que um aplicativo iOS forneça serviços acessíveis ao usuário usando a Siri e o aplicativo Mapas em um dispositivo iOS usando as Extensões de Aplicativo e as novas estruturas de interface do usuário Intents e Intents.
A Siri trabalha com o conceito de Domínios, grupos de ações conhecidas para tarefas relacionadas. Cada interação que o aplicativo tem com a Siri deve se enquadrar em um de seus domínios de serviço conhecidos da seguinte maneira:
- Chamadas de áudio ou vídeo.
- Reservar uma viagem.
- Gerenciando treinos.
- Mensagens.
- Pesquisando fotos.
- Envio ou recebimento de pagamentos.
Quando o usuário faz uma solicitação da Siri envolvendo um dos serviços da Extensão de Aplicativo, o SiriKit envia à extensão um objeto Intent que descreve a solicitação do usuário junto com quaisquer dados de suporte. Em seguida, a Extensão de Aplicativo gera o objeto Response apropriado para a intenção fornecida, detalhando como a extensão pode lidar com a solicitação.
As extensões de interface do usuário Intents e Intents
Tanto a Siri quanto o aplicativo Mapas interagem com os serviços do aplicativo por meio de dois tipos diferentes de extensões de aplicativo:
- Extensão de intenções - Fornece à Siri e ao Google Maps o conteúdo do aplicativo e executa as tarefas necessárias para cumprir quaisquer intenções compatíveis.
- Extensão de interface do usuário de intenções - Fornece uma interface do usuário personalizada que será exibida para o conteúdo do aplicativo dentro da Siri ou do Google Maps.
O aplicativo deve fornecer uma Extensão de Intenções para oferecer suporte ao SiriKit e é responsável por fornecer informações que a Siri e o Google Maps podem apresentar ao usuário e por lidar com Intenções.
A criação de uma extensão de interface do usuário de intenções é opcional, já que a Siri geralmente lida com toda a interação do usuário e tem uma interface do usuário interna padrão para apresentar informações em cada um dos domínios suportados. Ao fornecer uma Extensão de Interface do Usuário de Intenções, o aplicativo pode usar a estrutura de Interface do Usuário de Intenção para apresentar uma Interface do Usuário avançada e personalizada com a identidade visual do aplicativo e informações adicionais.
Siri e a função do aplicativo Mapas
As solicitações faladas do usuário são processadas em linguagem e analisadas semanticamente pela Siri, que transforma essas solicitações em Intenções acionáveis que as Extensões de Intenção podem manipular.
O Google Maps usa as Extensões de Intenção do aplicativo para exibir informações na interface do Mapa em resposta às ações do usuário. Como solicitar restaurantes próximos ou obter avaliações de restaurantes do aplicativo.
Tanto a Siri quanto o Google Maps gerenciam todas as interações do usuário e exibem os resultados usando a interface padrão do sistema. A função de extensões de aplicativo é principalmente fornecer os dados que são exibidos. Opcionalmente, o aplicativo pode fornecer uma extensão de interface do usuário de intenções e apresentar uma interface do usuário personalizada para aprimorar a interface do sistema padrão.
Interagindo com a Siri via SiriKit
Esta seção apresentará uma visão geral de como o SiriKit permite que o usuário interaja com o aplicativo usando a Siri. Para este exemplo, usaremos o aplicativo falso MonkeyChat:
O MonkeyChat mantém seu próprio catálogo de contatos dos amigos do usuário, cada um associado a um nome de tela (como Bobo, por exemplo), e permite que o usuário envie bate-papos de texto para cada amigo por seu nome de tela.
Há muitas maneiras de o usuário iniciar uma interação com o aplicativo, já que pessoas diferentes podem fazer a mesma solicitação de muitas formas diferentes.
Por exemplo, se o usuário quiser enviar uma mensagem para seu amigo Bobo, ele pode ter a seguinte conversa com a Siri:
Usuário: Hey Siri, envie uma mensagem MonkeyChat.
Siri: Para quem?
Usuário:Bobo.
Siri: O que você quer dizer ao Bobo?
Usuário: Por favor, envie mais Bananas.
Outra pessoa pode fazer a mesma solicitação com uma conversa diferente:
Usuário: Envie uma mensagem para Bobo no MonkeyChat.
Siri: O que você quer dizer ao Bobo?
Usuário: Por favor, envie mais bananas.
E outro usuário pode fazer uma solicitação ainda mais curta:
Usuário:MonkeyChat Bobo por favor envie mais bananas.
Siri: Ok, enviando mensagem por favor envie mais bananas para Bobo no Monkeychat.
Ou até mesmo fazer o mesmo pedido em um idioma diferente:
Usuário: MonkeyChat Bobo s'il vous plaît envoyer plus de bananes.
Siri: Oui, envoi message s'il vous plaît envoyer plus de bananes à Bobo sur Monkeychat.
No entanto, outro usuário pode ser muito detalhado em sua conversa:
Usuário: Hey Siri, você pode por favor me fazer um favor e lançar o aplicativo MonkeyChat para enviar um texto com a mensagem por favor envie mais bananas.
Siri: Para quem?
Usuário: Meu melhor amigo Bobo.
Além disso, há muitas maneiras de a Siri responder a uma solicitação, algumas com base em como a solicitação foi feita:
- Ao segurar o botão Home - Siri fornecerá mais respostas visuais com feedback verbal limitado.
- Por "Hey Siri" - Siri será mais verbal e fornecerá menos respostas visuais.
A Siri também está ajustada para atender às necessidades de acessibilidade do usuário e interagirá e responderá com base nessas necessidades.
Não importa como uma solicitação é feita ou como a Siri responde à solicitação, a Siri lida com a conversa com o usuário e o aplicativo (por meio de suas Extensões) fornece a funcionalidade.
Quando o usuário faz uma solicitação verbal da Siri, estes são os passos que a Siri seguirá:
- Primeiro, a Siri pega o áudio da fala do usuário e o converte em texto.
- Em seguida, o texto é convertido em uma Intent, uma representação estruturada da solicitação do usuário.
- Com base na intenção, a Siri tomará uma ação para executar a solicitação do usuário.
- Por fim, a Siri apresentará Respostas (visuais e verbais) ao usuário com base na Ação realizada.
Existem três maneiras principais de o aplicativo participar da conversa do usuário com a Siri:
- Vocabulário - É assim que o aplicativo diz à Siri as palavras que precisa saber para interagir com ela.
- Lógica do aplicativo - Estas são as ações e respostas que o aplicativo tomará com base em determinadas intenções.
- Interface do usuário - Esta é a interface de usuário personalizada opcional na qual o aplicativo pode dar suas respostas.
Exemplo
Dadas as informações acima, examine como a conversa a seguir interagiria com o aplicativo MonkeyChat:
Usuário: Hey Siri, envie uma mensagem para Bobo no MonkeyChat.
Siri: O que você quer dizer ao Bobo?
Usuário: Por favor, envie mais bananas.
A primeira função que o aplicativo assume na conversa é ajudar a Siri a entender a fala do usuário:
A Siri não tem o nome "Bobo" em seu banco de dados, mas o aplicativo compartilha e compartilhou essas informações com a Siri por meio de seu Vocabulário. O aplicativo também ajuda a Siri a reconhecer que Bobo é um destinatário, já que os especificou para a Siri como um Contato.
A Siri sabe que é necessário mais para enviar uma mensagem do que apenas um destinatário, por isso verificará rapidamente com a Extensão de Aplicativo para ver se uma mensagem requer conteúdo. Como o MonkeyChat faz, a Siri responderá ao usuário com a pergunta: "O que você quer dizer ao Bobo?"
No exemplo acima, o usuário respondeu: "Por favor, envie mais bananas", que a Siri agrupará em uma intenção estruturada:
A Intenção estruturada conterá as seguintes informações:
- Domínio: Mensagens
- Intenção: sendMessage
- Destinatário: Bobo
- Conteúdo: Por favor, envie mais bananas
Cada Domínio tem como conjunto de Ações conhecidas que podem ser executadas dentro deles e, com base no Domínio e na Ação, zero a muitos parâmetros podem ser incluídos na Intenção enviada ao aplicativo.
A Intenção é então enviada para a Extensão de Aplicativo para processamento. Como resultado do processamento da Intent, o aplicativo gerará uma IntentResponse que será empacotada com a Intent e incluirá parâmetros descrevendo o que o aplicativo fez com a Intent.
Cada IntentResponse também incluirá um Código de Resposta que informa à Siri se o aplicativo foi capaz de concluir a solicitação ou não. Alguns domínios têm códigos de resposta de erro muito específicos que também podem ser enviados.
Finalmente, o IntentResponse incluirá um NSUserActivity
(como aqueles usados para dar suporte ao Hand Off). O NSUserActivity
será usado para iniciar o aplicativo se a resposta exigir que eles saiam do ambiente Siri e entrem no aplicativo para concluí-lo.
A Siri criará automaticamente um apropriado NSUserActivity
para iniciar o aplicativo e retomar de onde o usuário parou no ambiente Siri. No entanto, o aplicativo pode fornecer suas próprias NSUserActivity
informações personalizadas, se necessário.
Depois que o aplicativo processou a intenção e retornou uma resposta à Siri, ele apresenta os resultados ao usuário (verbal e visualmente):
A Siri tem várias interfaces de usuário de resposta integradas para cada um dos domínios disponíveis para o aplicativo. No entanto, como o MonkeyChat forneceu uma extensão de interface do usuário de intenção opcional, ele é usado para apresentar os resultados da conversa ao usuário no exemplo acima.
O ciclo de vida da intenção
Há três tarefas principais que a Extensão de Aplicativo precisará executar ao lidar com Intents:
- O aplicativo deve Resolver todos os parâmetros em um evento. Como resultado, o aplicativo chamará Resolver várias vezes (uma vez por cada parâmetro) e, às vezes, várias vezes no mesmo parâmetro até que o aplicativo e o usuário concordem com o que está sendo solicitado.
- O aplicativo deve confirmar que pode lidar com a intenção solicitada e informar a Siri sobre o resultado esperado.
- Finalmente, o aplicativo deve manipular a intenção e executar as etapas para alcançar o resultado solicitado.
O estágio Resolve
O estágio Resolver ajuda a Siri a entender os valores que o usuário forneceu e garante que o que o usuário realmente quis dizer é o que acontecerá quando a Intenção for processada pelo aplicativo.
Essa etapa também oferece uma oportunidade para o aplicativo influenciar o comportamento da Siri durante a conversa com o usuário. Para fazer isso, o aplicativo fornecerá uma resposta de resolução. Há uma série de respostas predefinidas para os diferentes tipos de dados que a Siri entende.
A resposta de resolução mais comum do aplicativo será Êxito, o que significa que o aplicativo correspondeu a parte específica de dados de um parâmetro (como o nome da tela do usuário) a uma informação que ele conhece.
Pode haver momentos em que o aplicativo precise confirmar se uma determinada solicitação corresponde à informação correta que conhece. Nesses casos, ele enviará uma resposta ConfirmationRequired para fazer uma pergunta sim ou não ao usuário, como "Enviar mensagem para Bobo, o Grande?"
Pode haver outros casos em que o aplicativo exigirá que o usuário escolha entre uma pequena lista de opções. Nesse caso, o aplicativo fornecerá uma resposta de desambiguação com uma lista de duas a dez opções para o usuário escolher, como:
Who do you want to message?
* Bobo the Great
* Bobo Jr.
* Little Bobo
A Siri lidará com o usuário que fizer a seleção, verbalmente ou interagindo com a interface do usuário da Siri, e o resultado será enviado de volta ao aplicativo.
Em outros casos, pode não haver informações suficientes para o aplicativo resolver o parâmetro ou pode haver muitas correspondências para resolver usando desambiguação (como 80 usuários com Bobo em seu nome). Nesses casos, o aplicativo enviará uma resposta NeedsMoreDetails e a Siri solicitará que o usuário seja mais específico.
Se o usuário não forneceu um valor necessário para processar a Intenção, ele poderá enviar uma resposta NeedsValue para que a Siri solicite o valor ao usuário.
Se o aplicativo não oferecer suporte a um valor que o usuário forneceu para um parâmetro específico, ele poderá enviar a resposta UnsupportedWithReason para fornecer um motivo pelo qual o valor não foi suportado. A Siri, então, solicitará ao usuário um valor completamente novo e dará a ele o motivo pelo qual ele é necessário.
Finalmente, use a resposta NotRequired para informar à Siri que o aplicativo não requer um valor para um determinado parâmetro. Se o usuário fornecer um de qualquer maneira, ele será simplesmente ignorado pela Siri.
O estágio de confirmação
O Estágio de Confirmação tem duas finalidades:
- Para dizer à Siri o resultado esperado de lidar com uma intenção para que a Siri possa dizer ao usuário o que vai acontecer.
- Fornece uma oportunidade de verificar quaisquer estados necessários que o aplicativo possa precisar para concluir a solicitação apresentada pelo usuário, como ter dinheiro suficiente no banco para fazer o pagamento solicitado.
O aplicativo fornecerá uma resposta de intenção a partir da etapa de confirmação, que deve ser preenchida com o máximo de informações que o aplicativo tem disponível para que a Siri possa comunicá-la efetivamente com o usuário.
Com base no tipo de Domínio e Ação, a Siri pode solicitar ao usuário uma confirmação, como antes de enviar um pagamento ou reservar uma corrida.
O estágio do punho
O Handle Stage é a parte mais importante do trabalho com uma Intent porque é o ponto em que o aplicativo atende à solicitação do usuário executando a tarefa que foi solicitada a fazer.
Assim como fez no Etapa de Confirmação, o aplicativo precisa fornecer o máximo de informações sobre o resultado possível para que a Siri possa relacionar isso com o usuário. Às vezes, essas informações serão apresentadas visualmente ou outras vezes a Siri simplesmente as falará de volta para o usuário.
Pode haver momentos em que o aplicativo pode exigir tempo extra para processar uma determinada solicitação, como atrasos de chamadas de rede ou se uma pessoa ao vivo precisar atender à solicitação (como concluir e enviar um pedido ou dirigir um carro para o local do usuário). Quando a Siri estiver aguardando uma resposta do aplicativo, ela exibirá uma interface do usuário em espera para o usuário informando que o aplicativo está processando a solicitação.
O ideal é que o aplicativo forneça uma resposta à Siri dentro de dois a três segundos, no máximo. Se o aplicativo souber que uma determinada resposta levará mais tempo para ser processada, ele precisará enviar um código de resposta do InProgress para a Siri. A Siri informará ao usuário que o aplicativo está processando a solicitação em segundo plano e continuará a fazê-lo mesmo que ele saia do ambiente Siri.
Adicionando SiriKit ao aplicativo
Com o SiriKit no iOS 10, a Apple criou dois novos pontos de extensão:
- Extensão de intenções - Fornece à Siri o conteúdo do aplicativo e executa as tarefas necessárias para cumprir quaisquer intenções compatíveis.
- Extensão de interface do usuário de intenções - Fornece uma interface do usuário personalizada que será exibida para o conteúdo de aplicativos dentro da Siri.
Há também uma API para fornecer palavras e frases à Siri para ajudar no reconhecimento na forma de:
- Vocabulário do aplicativo - Palavras e frases que são comuns a todos os usuários do aplicativo.
- Vocabulário do usuário - Palavras e frases exclusivas de um determinado usuário do aplicativo.
A extensão de intenções
A Extensão Intents é responsável por lidar com as principais interações entre o aplicativo e a Siri da seguinte maneira:
A Extensão de Intenção pode suportar uma ou mais Intenções, cabe ao desenvolvedor decidir como deseja implementar o SiriKit no aplicativo. O desenvolvedor também pode adicionar uma extensão de intenção separada para cada intenção que precisa ser manipulada. Dito isso, a Apple solicita que o desenvolvedor limite o número de extensões de intenção para que a Siri não tenha vários processos abertos no aplicativo, o que requer mais memória e tempo para lidar.
O desenvolvedor também deve estar ciente de que a Extensão de Intenção será executada em segundo plano enquanto a Siri estiver ativa. Isso permite que a Siri mantenha ativamente uma conversa com o usuário enquanto ainda se comunica com a extensão para processar informações sobre a solicitação.
Considerações de privacidade e segurança
A Apple tomou grandes medidas para garantir que as informações privadas de um usuário estejam seguras ao trabalhar com a Siri e, como tal, há várias interações que exigem que o usuário esteja logado no dispositivo iOS. Por exemplo, ao solicitar uma corrida ou fazer um pagamento.
Além disso, há comportamentos específicos que o aplicativo pode querer limitar ao usuário que está sendo conectado ao dispositivo. Para essas situações, o aplicativo pode solicitar o comportamento Restringir enquanto estiver bloqueado . Isso é feito por meio de uma configuração no Info.plist
arquivo.
A Estrutura de Autenticação Local está disponível para a Extensão de Intenção para que o aplicativo possa solicitar ao usuário informações de autenticação adicionais, mesmo que o dispositivo já esteja desbloqueado.
Por fim, o Apple Pay está disponível para a Extensão de Intenção para que o aplicativo possa concluir uma transação usando o Apple Pay e a folha integrada do Apple Pay aparecerá acima da interface da Siri.
Além disso, a Apple quer garantir que os usuários saibam quando estão enviando informações para um aplicativo de terceiros e, como tal, o usuário deve dizer o nome específico do aplicativo (conforme especificado no Nome de exibição do pacote do aplicativo) ao fazer uma solicitação.
A Apple projetou a Siri para realizar conversas naturais e fluidas com o usuário e, por isso, o nome do pacote do aplicativo pode ser usado em muitas partes da fala, onde quer que se encaixe naturalmente no pedido do usuário.
Uma das coisas comuns que os usuários farão é "verbificar" o nome do aplicativo, ou seja, pegar o nome do aplicativo e usá-lo como um verbo em uma solicitação. Por exemplo, "MonkeyChat Bobo essas eram ótimas bananas".
A extensão da interface do usuário Intents
A Extensão de Interface do Usuário de Intenções apresenta a oportunidade de trazer a interface do usuário e a marca do aplicativo para a experiência da Siri e fazer com que os usuários se sintam conectados ao aplicativo. Com essa extensão, o aplicativo pode trazer a marca, bem como informações visuais e outras para a transcrição.
A Extensão de Interface do Usuário de Intenções sempre retornará um UIViewController
e o aplicativo poderá adicionar o que quiser dentro do controlador de exibição, como mostrar informações adicionais que vão além da resposta inicial. A interface do usuário de intenções também pode atualizar o usuário com o status de um evento de longa duração, como quanto tempo levará um carro de compartilhamento de viagem para chegar à sua localização.
A Extensão da Interface do Usuário de Intenções sempre será exibida junto com outros conteúdos da Siri, como o ícone e o nome do aplicativo na parte superior da interface do usuário ou, com base na Intenção, botões (como Enviar ou Cancelar) podem ser exibidos na parte inferior.
Há alguns casos em que o aplicativo pode substituir as informações que a Siri está exibindo para o usuário por padrão, como mensagens ou mapas, onde o aplicativo pode substituir a experiência padrão por uma personalizada para o aplicativo.
Importante
Embora seja possível adicionar elementos interativosUIViewController
, como UIButtons
ou UITextFields
à Extensão da Interface do Usuário de Intenção , eles são estritamente proibidos como a Interface do Usuário de Intenção não interativa e o usuário não poderá interagir com eles.
É totalmente opcional para o aplicativo fornecer uma extensão de interface do usuário de intenção, uma vez que a Siri contém um conjunto padrão de interface do usuário para cada tipo de intenção. Além disso, as interfaces da interface do usuário do Intents estão disponíveis apenas para determinadas Intenções que a Apple considerou que seriam úteis para o usuário.
Adicionando vocabulário SiriKit
A parte final da implementação do SiriKit está dentro do aplicativo, fornecendo o vocabulário necessário. Muitos aplicativos têm maneiras exclusivas de descrever informações para o usuário e maneiras exclusivas que o usuário fornecerá informações para o aplicativo.
Por causa disso, a Siri requer a ajuda do aplicativo para entender as palavras e frases exclusivas do aplicativo. Algumas dessas frases farão parte do aplicativo para que todos os usuários as conheçam e entendam. Outros ainda serão exclusivos para um determinado usuário do aplicativo.
Vocabulário específico do aplicativo
O Vocabulário Específico do Aplicativo define as palavras e frases específicas que serão conhecidas por todos os usuários do aplicativo, como tipos de veículos ou nomes de treinos. Como eles fazem parte do aplicativo, eles são definidos em um AppIntentVocabulary.plist
arquivo como parte do pacote principal do aplicativo. Além disso, essas palavras e frases devem ser localizadas.
Há várias partes em um arquivo de vocabulário AppIntentVocabulary.plist
:
- Exemplos de usos do aplicativo - Eles fornecem um conjunto de casos de uso comuns para as solicitações que o usuário pode fazer do aplicativo. Por exemplo: "Inicie um treino com o MonkeyFit".
- Parâmetros - Eles fornecem um conjunto de tipos de parâmetros não padrão específicos para o aplicativo. Por exemplo, nomes de treino para o aplicativo MonkeyFit. Estes consistem em:
- Frase - Permite que o aplicativo defina termos exclusivos para o aplicativo. Por exemplo: o tipo de treino "Bananarific" para o aplicativo MonkeyFit.
- Pronúncia - Dá dicas de pronúncia para Siri como uma ortografia fonética simples para uma determinada frase. Por exemplo, "ba nana ri fic".
- Exemplo - Fornece um exemplo de uso da frase fornecida no aplicativo. Por exemplo, "Start a Bananarific in MonkeyFit".
Para obter mais informações, consulte a Referência de formato de arquivo de vocabulário de aplicativo da Apple.
Vocabulário Específico do Usuário
O Vocabulário Específico do Usuário fornecerá palavras ou frases exclusivas para usuários individuais do aplicativo. Eles serão fornecidos em tempo de execução a partir do aplicativo principal (não das Extensões de Aplicativo) como um conjunto ordenado de termos ordenados em uma prioridade de uso mais significativa para os usuários, com os termos mais importantes no início da lista.
Dê uma olhada no exemplo do aplicativo MonkeyChat apresentado acima. O MonkeyChat mantém uma lista de todos os contatos do usuário, que ele enviará para a Siri por meio do Vocabulário Específico do Usuário. Ele também mantém uma lista dos 10 contatos mais recentes que o usuário enviou mensagens e tem um conjunto de contatos favoritos para cada usuário. Para este exemplo, os contatos favoritos devem estar no início do nosso Vocabulário Específico do Usuário, seguido pelos contatos recentes e pelo restante dos contatos do usuário.
Os seguintes tipos de informações são suportados pelo Vocabulário Específico do Usuário:
- Nomes de contato.
- Nomes de treino.
- Nomes de álbuns de fotos.
- Palavras-chave da foto.
Se o aplicativo depender do Catálogo de Endereços do iOS, o aplicativo não precisará executar nenhuma ação, pois essas informações já estão disponíveis para a Siri. O aplicativo só precisa fornecer nomes de contato se o aplicativo tiver seu próprio banco de dados exclusivo de contatos.
Ao projetar o vocabulário, forneça apenas os valores necessários que os usuários conhecem e se preocupam. Evite fornecer informações como números de telefone ou endereços de e-mail.
O aplicativo também precisa atualizar a Siri imediatamente quando o vocabulário específico do usuário mudar. Os usuários estão acostumados a solicitar informações da Siri no instante em que elas são adicionadas ao dispositivo iOS. Por exemplo, se o usuário adicionar um novo contato no aplicativo, envie essas informações para a Siri assim que o usuário salvá-las.
Mais importante, o aplicativo deve excluir informações do vocabulário da Siri imediatamente, já que um usuário pode ficar chateado se excluir uma informação, mas a Siri ainda estava reconhecendo horas ou dias depois.
Importante
O aplicativo deve remover todo o Vocabulário Específico do Usuário da Siri se o usuário optar por redefinir o aplicativo ou se fizer logout.
Permissões do SiriKit
A parte final do SiriKit é centrada em permissões. Assim como usar outros recursos do iOS (como Fotos, Câmera ou Contatos), os usuários precisam conceder permissão explícita para que o aplicativo fale com a Siri.
O aplicativo é capaz de fornecer uma cadeia de caracteres definindo quais informações fornecerá à Siri e dar um motivo pelo qual o usuário deve conceder esse acesso.
A Apple sugere que o aplicativo solicite permissão do usuário para usar a Siri na primeira vez que o usuário abrir o aplicativo depois de atualizar para o iOS 10. Isso é para que os usuários saibam sobre a integração com a Siri e possam pré-aprovar o uso antes de fazer sua primeira solicitação.
SiriKit e Mapas
O SiriKit é parte integrante do iOS e faz uso da estrutura Intents maior adicionada ao iOS 10. A estrutura Intents foi projetada para compartilhar ações e intenções comuns e compartilhadas com outras partes do sistema.
A estrutura Intents vai além da integração com a Siri e fornece outros recursos, como a integração de contatos, onde o aplicativo pode se tornar o aplicativo padrão de telefonia ou mensagens para contatos específicos. As intenções também fornecem integração profunda com o CallKit para fornecer aos usuários a melhor experiência VOIP possível.
O aplicativo Mapas no iOS 10 adicionou recursos como compartilhamento de carona, onde o usuário pode reservar uma viagem diretamente dentro da interface do usuário do Google Maps. O SiriKit fornece um ponto de extensão comum com o Google Maps para que o compartilhamento de viagens (e outras) intenções possam ser compartilhadas entre a Siri e o Google Maps.
Isso significa que, se o aplicativo adotou as extensões do SiriKit, ele também receberá a integração do Maps gratuitamente.
Projetando uma ótima experiência com a Siri
Projetar uma ótima experiência do usuário ao integrar um aplicativo à Siri é diferente de projetar uma ótima interface de usuário do aplicativo. Ao contrário de situações normais em que o usuário está interagindo com o aplicativo diretamente na tela, ao usar a Siri há muitas vezes em que nenhuma interface visual é visível. Por exemplo, quando o usuário iniciou a conversa com "Hey Siri".
Como a Siri ajuda o desenvolvedor
Ao projetar as interações de um aplicativo com a Siri, o aplicativo criará uma Interface de Conversação, o que significa que o contexto é derivado da conversa que a Siri está tendo com o usuário em nome do aplicativo.
Na ausência de uma referência visual, o usuário deve acompanhar as informações que estão sendo apresentadas em sua cabeça. Por isso, a Siri apresenta as informações mínimas necessárias para realizar a tarefa que o usuário deseja realizar.
A Interface de Conversação é moldada pelas perguntas e respostas do usuário e da Siri durante a conversa. Por isso, é importante pensar em como a Siri faz perguntas e responde ao projetar essa interface.
Veja o exemplo a seguir do usuário criando uma mensagem, a Siri pode responder com a pergunta: "Pronto para enviá-la?". O usuário poderia responder de muitas maneiras diferentes, como "Enviar", "Cancelar" ou até mesmo algo totalmente alheio a essa pergunta. Não importa como a conversa se desenrola, a Siri irá lidar com isso para o aplicativo e só enviará as informações relevantes à medida que estiverem disponíveis.
Há várias maneiras diferentes de um usuário iniciar uma conversa com a Siri:
- Ao pegar o dispositivo, pressione o botão Home. Nessa situação, a Siri apresentará mais interfaces visuais e menos respostas verbais.
- Dizendo "Hey Siri" e iniciando uma conversa Hands Free. Nessa situação, a Siri será menos visual e mais verbal.
- Usando recursos de acessibilidade, como aparelhos auditivos habilitados para bluetooth, onde a interface do usuário será adaptada para um usuário com necessidades especiais.
- Usando o Car Play, onde o usuário precisa manter sua atenção focada na direção, mantendo as distrações ao mínimo.
Como o desenvolvedor ajuda a Siri
Ao integrar um aplicativo com a Siri, o desenvolvedor precisa testar essa integração com frequência e garantir que está fazendo muitas solicitações diferentes, solicitando a mesma informação ou tarefa de tantas maneiras diferentes quanto possível.
Como não há duas pessoas que pensam da mesma forma, é fundamental que o desenvolvedor obtenha o maior número possível de testadores beta diferentes para ajudar a ajustar a integração com a Siri. Os usuários podem pedir informações ou fazer solicitações de maneiras que o desenvolvedor nunca pensou e esse ajuste fino pode ajudar a garantir que o grupo mais amplo de usuários tenha uma ótima experiência usando seu aplicativo com a Siri.
Teste em diferentes situações e ambientes. Inicie as conversas com a Siri de todas as maneiras possíveis para garantir que essas conversas permaneçam fluidas e naturais. Teste em locais onde o usuário provavelmente estaria usando o aplicativo, como em uma academia lotada.
Certifique-se de que o aplicativo está fornecendo todas as informações que a Siri precisa para representar adequadamente a solicitação e o resultado para o usuário. Isso é especialmente verdadeiro ao usar a Siri em uma situação de mãos livres.
Diretrizes de design da Siri
Lembre-se sempre que a Siri está tendo uma conversa com o usuário em nome do aplicativo. O desenvolvedor quer não ter certeza de que essa conversa permaneça o mais fluida e natural possível.
Como faria com qualquer conversa importante, o desenvolvedor precisa garantir o seguinte:
- Que o aplicativo esteja preparado para a conversa.
- Que o aplicativo ouça exatamente o que o usuário está tentando realizar.
- Que o aplicativo faça as perguntas apropriadas nos momentos apropriados.
- Que o aplicativo responda à solicitação com as informações que o usuário está buscando.
Preparando-se para a conversa
A primeira coisa a lembrar é que os usuários do aplicativo não serão exatamente como o desenvolvedor. Eles podem vir de diferentes origens, falar idiomas diferentes ou ter necessidades especiais ao trabalhar com o aplicativo.
Além disso, desde que o desenvolvedor projetou e construiu o aplicativo, eles têm conhecimento profundo e íntimo do aplicativo e de seu funcionamento interno e funções que um usuário típico não terá. Assim, o desenvolvedor pode pedir a solicitação da Siri de forma diferente de um usuário normal.
É por isso que é fundamental que o maior número possível de pessoas diferentes interaja com o aplicativo via Siri. Os usuários podem fazer solicitações do aplicativo via Siri que o desenvolvedor nunca pensou ou de maneiras que o desenvolvedor não considerou.
Verifique se o aplicativo é um bom ouvinte
O desenvolvedor precisa garantir que o aplicativo seja um bom ouvinte e esteja recebendo as especificidades da conversa que atendam às expectativas do usuário. Mas também é possível que eles não tenham fornecido todas as informações que o aplicativo requer para realizar a tarefa solicitada.
Há várias maneiras de o aplicativo lidar com essa situação:
- Escolha um bom padrão para o valor ausente - Por exemplo, um aplicativo de compartilhamento de viagem pode usar como padrão a localização atual do usuário se ele não especificar de onde deseja ser retirado.
- Faça um palpite educado - Usando informações específicas que o aplicativo coletou sobre o usuário, o aplicativo pode ser capaz de fazer e adivinhar as informações ausentes, como preencher um número de celular ausente das informações de contato do usuário. No entanto, deve-se tomar cuidado para evitar surpresas ruins, como escolher a opção mais cara, etc.
- Solicitar mais informações - O aplicativo pode fazer com que a Siri solicite ao usuário o valor ausente. No entanto, a chave aqui é manter as conversas simples e diretas. Os usuários ficarão rapidamente frustrados se tiverem que responder a várias perguntas para realizar sua solicitação.
- Lidar com desinformação normalmente - O usuário pode fornecer um valor que o aplicativo não estava esperando ou que ele não pode manipular no contexto especificado. Certifique-se de que o aplicativo relacione essa situação com o usuário de uma forma que torne clara e fácil para ele corrigir.
Quando o aplicativo é apresentado com um único valor que está em questão, a maneira preferida de lidar com isso é fazer com que a Siri peça a confirmação ao usuário. Por exemplo, "Você quis dizer Bobo, o Grande?", que eles podem responder com uma simples resposta sim ou não.
Quando há uma situação em que várias escolhas possíveis podem ser corretas para um único valor, a desambiguação é o método de manipulação preferido. Nessa situação, a Siri pode solicitar ao usuário até dez opções possíveis para escolher. Por exemplo:
Who do you want to send the message to?
* Bobo the Great!
* Bobo Jr.
* Little Bobo
Se ainda estiver em questão, peça à Siri que solicite ao usuário que forneça uma resposta totalmente nova e mais específica para um determinado valor.
Solicitar Confirmação Final
Antes que o aplicativo realmente execute a tarefa para atender à solicitação do usuário, a Siri verificará com a Extensão do aplicativo para garantir que tudo esteja no lugar. Por exemplo, o usuário tem dinheiro suficiente em sua conta para fazer o pagamento solicitado?
Além disso, o aplicativo precisa garantir que está fornecendo todas as informações possíveis à Siri para que possa apresentá-las ao usuário e confirmar que a tarefa prestes a ser executada atende às suas expectativas.
Depois que o usuário confirmar a solicitação e o aplicativo a tiver realizado, o aplicativo precisa garantir novamente que forneceu todos os resultados de volta à Siri para que possa relacioná-los com o usuário.
Respondendo à solicitação
A Siri tem várias interfaces de usuário integradas para cada um dos domínios e ações que conhece. No entanto, quando apropriado, o aplicativo pode fornecer uma Extensão de Interface do Usuário de Intenção personalizada para enriquecer a experiência do usuário, apresentando a identidade visual e a interface do usuário do aplicativo ou mais informações do que as presentes na solicitação.
Dito isso, a contenção deve ser usada ao projetar interfaces personalizadas para a Siri. Normalmente, o usuário está querendo fazer uma tarefa específica o mais rápido possível e não quer ser sobrecarregado com informações desnecessárias.
Também deve ser tomado cuidado para garantir que a interface do usuário personalizada pareça e responda corretamente em todos os diferentes dispositivos iOS e orientações que o usuário possa ter ou estar usando o dispositivo.
Quando apropriado, use a API do SiriKit para ocultar quaisquer informações redundantes já presentes na interface do usuário padrão da Siri. No entanto, certifique-se de que o aplicativo ainda está fornecendo as informações à Siri para que possa apresentá-las verbalmente em uma situação de mãos livres.
Pode haver situações em que a Siri iniciará o aplicativo para atender à solicitação do usuário, como apresentar as fotos que o usuário solicitou. Nessas situações, não surpreenda o usuário. Exiba as informações esperadas sem ter etapas intermediárias ou interação adicional necessária. Nunca exiba informações ou execute uma tarefa que o usuário não esteja esperando.
Polindo o design
Existem vários passos que a Apple sugere para polir o design das Interfaces de Conversação. Primeiro, é fornecer vocabulário claro e conciso e exemplos de casos de uso para a Siri.
Uma das maneiras pelas quais um usuário descobre o aplicativo é iniciando uma conversa com a Siri e perguntando: "O que você pode fazer?" A Siri mostrará várias coisas diferentes que pode fazer, incluindo o aplicativo do desenvolvedor e os casos de uso de herói de exemplo que forneceu por meio de seu plist
arquivo.
Como escrever bons exemplos de casos de uso:
- Verifique se os exemplos incluem o nome do aplicativo.
- Mantenha o exemplo curto e direto ao ponto.
- Forneça vários exemplos para cada uma das intenções suportadas pelo aplicativo.
- Priorize as intenções e os exemplos dentro deles com base nos casos de uso mais comuns do aplicativo.
- Verifique se o aplicativo fornece exemplos localizados.
- Certifique-se de que cada exemplo fornecido funcione conforme o esperado dentro do aplicativo.
- Evite abordar a Siri nos exemplos, então não inclua texto como "Hey Siri..."
- Evite quaisquer prazeres desnecessários, como "por favor" ou "obrigado".
Reserve o tempo apropriado para explorar e experimentar como o aplicativo pode moldar a conversa que a Siri está tendo com o usuário em seu nome. Certifique-se de conversar com usuários típicos durante todo o processo, pois suas interações e expectativas sobre o aplicativo podem mudar com o tempo.
Lembre-se sempre de testar o aplicativo em diferentes situações e todos os diferentes métodos para invocar uma conversa com a Siri. Teste em locais do mundo real que o usuário pode estar usando o aplicativo, longe do escritório e da mesa.
Esforce-se para que as conversas com a Siri (em nome do aplicativo) sejam fluidas, naturais e "pareçam perfeitas".
Resumo
Este artigo abordou os principais conceitos necessários para usar o SiriKit e mostrou que ele pode interagir com os aplicativos Xamarin.iOS para fornecer serviços acessíveis ao usuário usando a Siri e o aplicativo Mapas em um dispositivo iOS.