A partir do Android 7.0 (API de nível 24), é possível exibir notificações relacionadas no um grupo. Por exemplo, se o app mostrar notificações para e-mails recebidos, coloque todas as notificações de novas mensagens de e-mail no mesmo grupo para que sejam recolhidas juntas.
Para oferecer suporte a versões mais antigas, adicione uma notificação de resumo que aparece sozinha para resumir todas as notificações separadas. Geralmente, a melhor opção para fazer isso é notificação no estilo da caixa de entrada.
Figura 1. Uma imagem recolhida (superior) e expandida (inferior). grupo de notificações.
Use grupos de notificações se todas as condições a seguir forem verdadeiras caso:
As notificações filhas são notificações completas e podem ser mostradas individualmente sem a necessidade de um resumo do grupo.
A exibição individual de notificações filhas pode ser vantajosa. Por exemplo:
Elas são acionáveis, sem ações específicas para cada notificação.
Há mais informações em cada notificação para o usuário ver.
Se as notificações não atenderem aos critérios anteriores, considere atualizar uma notificação existente com novas informações ou criar um tipo de mensagem notificação a ser exibida várias atualizações na mesma conversa.
Criar um grupo e adicionar uma notificação
Para criar um grupo de notificações, defina uma string de identificador exclusivo para o grupo.
Em seguida, para cada notificação que você quer incluir no grupo, chame
setGroup()
,
passando o nome do grupo. Exemplo:
Kotlin
val GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL" val newMessageNotification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setGroup(GROUP_KEY_WORK_EMAIL) .build()
Java
String GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL"; Notification newMessageNotification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setGroup(GROUP_KEY_WORK_EMAIL) .build();
Por padrão, as notificações são classificadas de acordo com a data de postagem, mas você
pode alterar a ordem chamando
setSortKey()
Se os alertas de um grupo de notificações precisarem ser gerenciados por uma
notificação, chamada
setGroupAlertBehavior()
Por exemplo, se você quiser que apenas o resumo do seu grupo faça barulho, todas
as crianças do grupo precisam ter o comportamento de alerta de grupo
GROUP_ALERT_SUMMARY
As outras opções são
GROUP_ALERT_ALL
e
GROUP_ALERT_CHILDREN
Definir um resumo do grupo
As notificações agrupadas precisam ter uma notificação extra que atue como o grupo resumo. Para ativar as notificações agrupadas, defina um resumo do grupo. Isso o resumo do grupo precisa incluir um texto de cada uma das outras notificações no grupo para ajudar o usuário a entender o que está no grupo. Como o grupo que é exibido depende da versão do Android:
Em versões do Android anteriores à 7.0 (nível 24 da API), que não podem mostrar grupo de notificações, o sistema mostrará apenas o resumo do grupo e oculta as demais. O usuário pode tocar no resumo do grupo. para abrir o app.
No Android 7.0 e versões posteriores, o sistema mostra a notificação de resumo do grupo como um grupo aninhado de notificações, identificadas com snippets de texto de cada notificação agrupada. Ele não mostra o texto que você definiu no grupo com uma notificação resumida. O usuário pode expandir o grupo aninhado de notificações para conferir as notificações individuais do grupo, como mostrado na Figura 1.
Mesmo que as versões mais recentes do Android não mostrem o texto do resumo do grupo que você do projeto, você sempre precisa definir manualmente um resumo para habilitar a criação notificações. O comportamento do resumo do grupo pode variar em alguns dispositivos como wearables. Definir conteúdo avançado no resumo do grupo ajuda para oferecer a melhor experiência em todos os dispositivos e versões.
Para adicionar um resumo do grupo, faça o seguinte:
Crie uma nova notificação com uma descrição do grupo. Geralmente, a melhor opção deixar de lado o tipo de caixa de entrada notificação.
Adicione a notificação de resumo ao grupo chamando
setGroup()
.Especifique que ele precisa ser usado como o resumo do grupo chamando
setGroupSummary(true)
O código a seguir mostra um exemplo de como criar um resumo do grupo:
Kotlin
// Use constant ID for notifications used as group summary. val SUMMARY_ID = 0 val GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL" val newMessageNotification1 = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notify_email_status) .setContentTitle(emailObject1.getSummary()) .setContentText("You will not believe...") .setGroup(GROUP_KEY_WORK_EMAIL) .build() val newMessageNotification2 = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notify_email_status) .setContentTitle(emailObject2.getSummary()) .setContentText("Please join us to celebrate the...") .setGroup(GROUP_KEY_WORK_EMAIL) .build() val summaryNotification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setContentTitle(emailObject.getSummary()) // Set content text to support devices running API level < 24. .setContentText("Two new messages") .setSmallIcon(R.drawable.ic_notify_summary_status) // Build summary info into InboxStyle template. .setStyle(NotificationCompat.InboxStyle() .addLine("Alex Faarborg Check this out") .addLine("Jeff Chang Launch Party") .setBigContentTitle("2 new messages") .setSummaryText("janedoe@example.com")) // Specify which group this notification belongs to. .setGroup(GROUP_KEY_WORK_EMAIL) // Set this notification as the summary for the group. .setGroupSummary(true) .build() NotificationManagerCompat.from(this).apply { notify(emailNotificationId1, newMessageNotification1) notify(emailNotificationId2, newMessageNotification2) notify(SUMMARY_ID, summaryNotification) }
Java
// Use constant ID for notifications used as group summary. int SUMMARY_ID = 0; String GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL"; Notification newMessageNotification1 = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notify_email_status) .setContentTitle(emailObject1.getSummary()) .setContentText("You will not believe...") .setGroup(GROUP_KEY_WORK_EMAIL) .build(); Notification newMessageNotification2 = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notify_email_status) .setContentTitle(emailObject2.getSummary()) .setContentText("Please join us to celebrate the...") .setGroup(GROUP_KEY_WORK_EMAIL) .build(); Notification summaryNotification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setContentTitle(emailObject.getSummary()) // Set content text to support devices running API level < 24. .setContentText("Two new messages") .setSmallIcon(R.drawable.ic_notify_summary_status) // Build summary info into InboxStyle template. .setStyle(new NotificationCompat.InboxStyle() .addLine("Alex Faarborg Check this out") .addLine("Jeff Chang Launch Party") .setBigContentTitle("2 new messages") .setSummaryText("janedoe@example.com")) // Specify which group this notification belongs to. .setGroup(GROUP_KEY_WORK_EMAIL) // Set this notification as the summary for the group. .setGroupSummary(true) .build(); NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(emailNotificationId1, newMessageNotification1); notificationManager.notify(emailNotificationId2, newMessageNotification2); notificationManager.notify(SUMMARY_ID, summaryNotification);
O ID de notificação de resumo deve permanecer o mesmo para ser postada apenas uma vez e para que você possa atualizá-lo mais tarde se as informações do resumo mudarem. Depois adições ao grupo devem resultar na atualização do resumo existente.
Para ver um exemplo de código que usa notificações, consulte as Notificações do Android Exemplo ,
Agrupamento automático
No Android 7.0 (nível 24 da API) e versões mais recentes, se o app enviar quatro ou mais notificações e não especificar uma chave ou um resumo do grupo, o sistema poderá agrupá-las automaticamente. As notificações agrupadas aparecem automaticamente com uma notificação de resumo do grupo identificada com trechos de texto de alguns as notificações agrupadas. O usuário pode expandir essa notificação de resumo para ver cada notificação individual, como acontece com as notificações agrupadas manualmente.
O comportamento do agrupamento automático pode variar em alguns tipos de dispositivo. Para oferecer a melhor em todos os dispositivos e versões, se você sabe que as notificações devem ser agrupados, especifique uma chave e um resumo para garantir que eles estejam agrupados.