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.](https://developer.android.com/static/images/guide/topics/ui/conversations-conv-space.png?authuser=6&hl=pt)
Em dispositivos portáteis, há uma seção separada na parte superior da aba de notificações contendo 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 e manter pressionado:
- 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.](https://developer.android.com/static/images/guide/topics/ui/conversations-bubble.gif?authuser=6&hl=pt)
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 as seguintes condições forem verdadeiras:
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()
ousetShortcutInfo()
. 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 comoCATEGORY_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 de compatibilidade para definir seus atalhos como
relacionados a
conversation
de forma conveniente.
- 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
Como testar notificações e atalhos de conversa
![Ao manter uma conversa pressionada, será aberto um menu de ações relacionadas à conversa.](https://developer.android.com/static/images/guide/topics/ui/conversations-testing.png?authuser=6&hl=pt)
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](https://developer.android.com/static/images/guide/topics/ui/conversation-widgets.png?authuser=6&hl=pt)
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](https://developer.android.com/static/images/guide/topics/ui/widget-picker-conversation.png?authuser=6&hl=pt)
Siga estas etapas:
- 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.
- Arraste o widget para a tela inicial. Uma lista de conversas ativas ou recentes do app do usuário A poderá ser selecionada.
- Agora, envie uma mensagem de teste no dispositivo do usuário B para o usuário A.
- 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.
- 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.