Pessoas e conversas

A iniciativa de pessoas e conversas existe há vários anos no Android e tem como objetivo destacar pessoas e conversas na superfície do sistema do smartphone. Essa prioridade é baseada no fato de que a comunicação e a interação com outras pessoas ainda são a área funcional mais valiosa e importante para a maioria dos nossos usuários em todas as regiões demográficas.

Vários recursos foram lançados no Android 11 para apoiar a iniciativa de pessoas e conversas.

Espaço de conversa


O espaço de conversa é uma área de notificação dedicada a conversas em tempo real entre pessoas.
Figura 1: o espaço de conversas.

Em dispositivos portáteis, há uma seção separada na parte superior da aba de notificações que contém apenas conversas com pessoas em tempo real, como chamadas e mensagens de chat, incluindo chats em grupo. As notificações nesse espaço têm uma aparência e um funcionamento diferente das notificações normais em muitos smartphones:

  • O design é diferente, com forte ênfase no avatar que representa as pessoas, combinado com o app em que acontece a conversa.
  • Um toque na notificação abre a conversa no app, ou no balão, se a conversa já tiver sido iniciada. Um toque no cursor de texto expande as novas mensagens da aba, exibindo todo o conteúdo com a lista completa de opções.
  • Ações específicas de conversa são oferecidas, algumas ao tocar nelas e mantê-las pressionadas:
    • marcar esta conversa como prioritária;
    • promover esta conversa para o balão (exibido somente se o app for compatível com balões);
    • silenciar notificações para esta conversa;
    • definir sons ou vibrações personalizados para esta conversa.

Conversas em balões

Se uma notificação atender aos requisitos da conversa, a plataforma a iniciará como um balão na gaveta de notificações.
Figura 2: notificação iniciada como balão na gaveta de notificações.

A partir do Android 11, balões podem ser iniciados pelas notificações na seção Conversas. Somente notificações com um atalho associado podem ser exibidas em um balão. As conversas marcadas como importantes ou acionadas no balão na aba de notificações aparecem automaticamente.

Atalhos de conversa

Os atalhos para as conversas aparecem na tela de início e ao lado dos atalhos de compartilhamento de longa duração na Sharesheet.

Diretrizes da API

Esta seção descreve as APIs para adicionar compatibilidade no seu app para o espaço fornecido pelo sistema que mostra pessoas e conversas.

Atalhos para conversas

Para participar dessa iniciativa voltada para conversas, os apps precisam fornecer ao sistema atalhos de longa duração. É altamente recomendável usar atalhos de compartilhamento de longa duração. Se necessário, é possível usar atalhos dinâmicos no Android 11, mas podemos remover essa opção no futuro.

Para publicar um atalho para a conversa, chame os métodos ShortcutManagerCompat setDynamicShortcuts(), addDynamicShortcuts() ou pushDynamicShortcut() (que gerencia automaticamente o limite de atalhos para o desenvolvedor). Esse atalho precisa ser de longa duração e ter dados anexados de Person de uma ou mais pessoas, identificando os outros participantes da conversa. Também recomendamos que você defina o LocusIdCompat.

Se uma conversa não existir mais, o app poderá excluir o atalho com removeLongLivedShortcuts(). Isso faz com que o sistema exclua todos os dados associados à conversa. Embora os atalhos sejam removíveis, não é recomendado que os apps removam atalhos armazenados em cache, a menos que seja absolutamente necessário. Um atalho provavelmente está armazenado em cache porque o usuário interagiu para mudar a experiência dele, e a remoção desfaz essas mudanças, levando à frustração do usuário.

Notificações de conversa

Uma notificação será considerada uma notificação de conversa se o seguinte for verdadeiro:

  • A notificação usa MessagingStyle.

  • (Somente se o app for destinado ao Android 11 ou uma versão mais recente) A notificação está associada a um atalho válido de compartilhamento dinâmico ou em cache de longa duração. A notificação pode definir essa associação chamando setShortcutId() ou setShortcutInfo(). Se o app for direcionado ao Android 10 ou versões anteriores, a notificação não precisará ser associada a um atalho, conforme discutido na seção de opção de substituto.

  • O usuário não rebaixou a conversa da seção de conversas pelas configurações do canal de notificação no momento da postagem.

Usar o LocusIdCompat

A inteligência no dispositivo determina as conversas que provavelmente serão mais interessantes para o usuário. Entre os sinais mais importantes estão o tempo para retorno e a frequência das sessões de cada conversa. O sistema reconhece as interações com uma conversa por atalhos da tela de início ou dentro de uma notificação, se elas forem marcadas corretamente. No entanto, o sistema não reconhece conversas que aconteceram totalmente no app, a menos que essas interações também estejam marcadas. Portanto, recomendamos que você anexe um LocusIdCompat ao atalho e anote a atividade ou o fragmento no app com o LocusIdCompat associado. Use o LocusIdCompat para permitir que o sistema de sugestões classifique a conversa adequadamente e exiba o horário correto da última interação do usuário com uma conversa, incluindo interações no app. Se você usar o método setShortcutInfo() para associar a conversa a um atalho, o sistema de conversas anexará automaticamente o LocusIdCompat adequado.

Requisitos de espaço de conversa para apps direcionados ao Android 10 ou versões anteriores

Mesmo que um app não seja direcionado ao Android 11, as mensagens dele ainda poderão ser exibidas no espaço de conversa. No entanto, o app ainda precisará atender a determinados requisitos. Esta seção descreve os requisitos desses apps e o comportamento substituto caso o app não atenda a eles.

O principal requisito para participação no espaço de mensagens é que o app precisa implementar notificações MessagingStyle, que precisam se referir a um atalho de longa duração publicado no momento em que a notificação é publicada. As notificações que atendem a esses requisitos aparecem no espaço de conversa com este comportamento:

  • A notificação será exibida no estilo de conversa.
  • O botão Balão é oferecido, se implementado.
  • Funções específicas de conversa são oferecidas in-line.

Se a notificação não atender a esses requisitos, a plataforma usará opções de substituto para formatá-la. Se a notificação atender aos requisitos de um dos casos de substituto, ela será exibida no espaço de conversa com formatação especial. Se a notificação não se qualificar para uma das opções de substituto, ela não será exibida no espaço de conversa.

Substituto: se MessagingStyle for usado, mas nenhum atalho for fornecido

Se o app for destinado ao Android 10 ou versão anterior e uma notificação usar MessagingStyle, mas não associar a mensagem a um atalho, a notificação será mostrada no espaço de conversa com este comportamento:

  • A notificação será exibida no estilo de conversa.
  • Nenhum botão de balão será oferecido.
  • Nenhuma função específica de conversa será oferecida in-line.

Substituto: se o MessagingStyle não for usado, mas o app for um app de mensagens reconhecido

Se uma notificação não usar MessagingStyle, mas o app for reconhecido pela plataforma como um app de mensagens, e o parâmetro category da notificação for definido como msg, a notificação será exibida no espaço de conversa com este comportamento:

  • A notificação será exibida no antigo estilo, anterior ao do Android 11.
  • Nenhum botão de balão será oferecido.
  • Nenhuma função específica de conversa será oferecida in-line.

Orientação, uso e teste

Esta seção fornece orientações gerais sobre como usar e testar os recursos de conversa.

Quando devo usar as conversas?

As notificações de conversas e os atalhos relacionados visam melhorar a experiência do usuário em conversas em tempo real. Por exemplo, SMS, chats e chamadas telefônicas são conversas em tempo real em que os usuários esperam se comunicar rapidamente. Os usuários não têm essa expectativa com e-mails e atividades não relacionadas a conversas.

Os usuários vão poder remover uma conversa da seção de conversa se não sentirem que ela está no espaço certo.

Práticas recomendadas

Para aumentar o engajamento e facilitar a interação dos usuários com pessoas e conversas relacionadas a seu app, recomendamos as práticas a seguir.

  • Para garantir que as chamadas perdidas sejam exibidas na aba de conversas priorizadas e apareçam corretamente no widget de conversão, formate as notificações de chamadas perdidas como conversations com uma categoria definida como CATEGORY_MISSED_CALL.
  • Ofereça avatares de alta qualidade (104 dp) para os usuários. Caso contrário, o sistema usará as iniciais da pessoa, o que é uma experiência menos envolvente.
  • Não cancel (cancele) uma notificação de conversa antes que o usuário tenha visto a mensagem. Um exemplo disso é o cancelamento de uma notificação ao abrir o app em uma visualização em que o usuário não pode ver ou responder a mensagem. Se o usuário não tiver a oportunidade de ler ou responder a mensagem, uma notificação cancelada e o balão associado a ela serão removidos, resultando na perda do contexto da conversa.
  • Forneça um URI de data para metadados relacionados a MIME associados a mensagens. Isso proporciona a opção de oferecer uma experiência mais completa em notificações.
  • Use a API Android 12 status para tornar os widgets de conversa mais envolventes.
  • Adote as práticas recomendadas abaixo para atalhos de conversa.
    • Publique atalhos para conversas no app recebidas e enviadas que não enviam notificações. As mensagens recebidas e enviadas na mesma conversa precisam ter o mesmo ID de atalho. Use pushDynamicShortcut() para publicar seus atalhos e informar o uso.
    • Para evitar cortes não intencionais do avatar do atalho, forneça um AdaptiveIconDrawable para o ícone do atalho. Consulte Como oferecer imagens de atalhos para mais detalhes.
    • Para ajudar o sistema a promover seu atalho, siga as diretrizes para conseguir a melhor classificação. Seu atalho será classificado em diferentes plataformas, incluindo a planilha de compartilhamento do Android, se for um atalho de compartilhamento.
    • Verifique se as intents dos atalhos de conversa são iniciadas diretamente na conversa aplicável.
    • Use as bibliotecas compat para definir seus atalhos como conversation relacionados.

Como testar notificações e atalhos de conversa

Ao manter uma conversa pressionada, será aberto um menu de ações relacionadas à conversa.
Figura 3: para verificar se uma notificação de conversa está configurada corretamente, toque nela e a mantenha pressionada e confirme se o menu de conversas é exibido.

Se você seguir as diretrizes, as conversas aparecerão automaticamente no espaço de conversa. É possível verificar se o atalho está integrado corretamente tocando na notificação e a mantendo pressionada. Se a integração for feita corretamente, a IU mostrará ações relacionadas à conversa. Se a notificação não estiver vinculada a um atalho, a IU mostrará um texto informando que o app não é compatível com os recursos de conversa.

Os atalhos adicionados são exibidos ao tocar na tela de início e mantê-la pressionada. Lembre-se de testar se os atalhos levam você ao lugar correto no app.

Os atalhos de compartilhamento adicionados são exibidos na linha de compartilhamento direto da Sharesheet ao compartilhar conteúdo que o atalho de compartilhamento pode receber.

Widgets de conversa

Conversas exibidas em widgets de conversa
Figura 1: conversas exibidas em widgets de conversa.

No Android 12, o recurso widget de conversa é baseado no recurso de pessoas e conversas introduzido no Android 11, permitindo que os apps exibam o status das conversas nos widgets relacionados.

Os widgets de conversa promovem a interação do usuário, permitindo que ele abra chats facilmente na tela inicial. Esses widgets são atalhos aprimorados para que os usuários voltem com eficiência às conversas, enquanto exibem trechos do status da conversa ou outras informações relevantes.

Confirmar se o app é compatível com widgets de conversa

Para confirmar se o seu app é compatível com widgets de conversa, é preciso ter pelo menos dois dispositivos Android, ambos executando o Android 12, e duas contas de usuário (uma em cada dispositivo) para trocar mensagens. Neste procedimento, chamaremos as contas de "usuário A" e "usuário B".

IU do seletor de widgets para adicionar um novo widget de conversa
Figura 2: IU do seletor de widgets para adicionar um novo widget de conversa.

Siga estas etapas:

  1. No dispositivo do usuário A, toque na tela de início e a mantenha pressionada. No seletor de widgets, toque em um novo widget para abrir uma conversa, conforme mostrado na Figura 2.
  2. Arraste o widget para a tela inicial. Uma lista de conversas ativas ou recentes do app do usuário A poderá ser selecionada.
  3. Agora, envie uma mensagem de teste no dispositivo do usuário B para o usuário A.
  4. De volta ao dispositivo do usuário A, verifique se o widget está atualizado para exibir a notificação da mensagem do usuário B.
  5. Opcional: peça para o usuário A e o usuário B definirem a conversa com valores de status diferentes para confirmar se os widgets exibem esses valores. Para uma lista de valores de status, consulte ConversationStatus.