Android 7.0 (API 수준 24)부터 관련 알림을 그룹으로 표시할 수 있습니다. 예를 들어 앱에서 수신된 이메일의 알림을 표시하는 경우 새 이메일 메시지의 모든 알림을 동일한 그룹에 넣어 함께 접히도록 합니다.
하위 버전을 지원하려면 모든 개별 알림을 요약하는 요약 알림을 단독으로 표시되도록 추가합니다. 일반적으로 받은편지함 스타일 알림을 사용합니다.
사용 사례에 다음 조건이 모두 충족되는 경우 알림 그룹을 사용합니다.
하위 알림은 완전한 알림이며 그룹 요약 없이 개별적으로 표시할 수 있습니다.
하위 알림을 개별적으로 표시하는 것이 좋습니다. 예를 들면 다음과 같습니다.
각 알림에 고유한 작업이 있습니다.
사용자가 볼 수 있는 각 알림에 더 많은 정보가 있습니다.
알림이 이전 기준을 충족하지 않는 경우 대신 새 정보로 기존 알림을 업데이트하거나 동일한 대화에 여러 업데이트를 표시하는 메시지 스타일 알림을 만드는 것이 좋습니다.
그룹을 만들고 그룹에 알림 추가
알림 그룹을 만들려면 그룹의 고유 식별자 문자열을 정의합니다.
그런 다음 그룹에 포함할 각 알림에 대해 setGroup,
그룹 이름을 전달하여 호출합니다. 예를 들면 다음과 같습니다.
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()
기본적으로 알림은 게시된 시간에 따라 정렬되지만
호출하여 순서를 변경할 수 있습니다. setSortKey
알림 그룹의 알림을 다른
알림에서 처리해야 하는 경우 setGroupAlertBehavior를 호출합니다. 예를 들어 그룹의 요약만 소리를 내도록 하려면 그룹의 모든 하위 요소에
그룹 알림 동작 GROUP_ALERT_SUMMARY가 있어야 합니다. 다른 옵션은
GROUP_ALERT_ALL 및 GROUP_ALERT_CHILDREN입니다.
그룹 요약 설정
그룹화된 알림에는 그룹 요약 역할을 하는 추가 알림이 있어야 합니다. 그룹화된 알림을 사용 설정하려면 그룹 요약을 설정해야 합니다. 이 그룹 요약에는 사용자가 그룹의 내용을 이해할 수 있도록 그룹에 있는 다른 각 알림의 텍스트가 포함되어야 합니다. 그룹 요약이 표시되는 방식은 Android 버전에 따라 다릅니다.
Android 버전 7.0 (API 수준 24) 미만에서는 중첩된 알림 그룹을 표시할 수 없으므로 시스템은 그룹 요약 알림만 표시하고 다른 모든 알림은 숨깁니다. 사용자는 그룹 요약 알림을 탭하여 앱을 열 수 있습니다.
Android 7.0 이상에서는 시스템이 그룹 요약 알림을 그룹화된 각 알림의 텍스트 스니펫으로 라벨이 지정된 중첩된 알림 그룹으로 표시합니다. 그룹 요약 알림에 설정한 텍스트는 표시되지 않습니다. 사용자는 그림 1과 같이 중첩된 알림 그룹을 펼쳐 그룹의 개별 알림을 볼 수 있습니다.
최신 버전의 Android에서 설계한 그룹 요약 텍스트를 표시하지 않더라도 그룹화된 알림을 사용 설정하려면 요약을 수동으로 설정해야 합니다. 그룹 요약의 동작은 웨어러블과 같은 일부 기기 유형에서 다를 수 있습니다. 그룹 요약에 리치 콘텐츠를 설정하면 모든 기기 및 버전에서 최상의 환경을 제공하는 데 도움이 됩니다.
그룹 요약을 추가하려면 다음 단계를 따르세요.
그룹에 관한 설명이 포함된 새 알림을 만듭니다. 일반적으로 받은편지함 스타일 알림을 사용하는 것이 가장 좋습니다.
setGroup을 호출하여 그룹에 요약 알림을 추가합니다.`setGroupSummary(true)`를 호출하여 그룹 요약으로 사용해야 한다고 지정합니다
setGroupSummary(true).
다음 코드는 그룹 요약을 만드는 예를 보여줍니다.
// 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) }
요약 알림 ID는 한 번만 게시되고 요약 정보가 변경되면 나중에 업데이트할 수 있도록 동일하게 유지되어야 합니다. 그룹에 추가되는 후속 항목은 기존 요약을 업데이트해야 합니다.
자동 그룹화
Android 7.0 (API 수준 24) 이상에서 앱이 알림을 전송하고 그룹 키 또는 그룹 요약을 지정하지 않으면 시스템이 자동으로 그룹화할 수 있습니다. 자동으로 그룹화된 알림은 그룹화된 알림의 일부 텍스트 스니펫으로 라벨이 지정된 그룹 요약 알림과 함께 표시됩니다. 사용자는 수동으로 그룹화된 알림과 마찬가지로 이 요약 알림을 펼쳐 각 개별 알림을 볼 수 있습니다.
자동 그룹화 동작은 일부 기기 유형에서 다를 수 있습니다. 모든 기기 및 버전에서 최상의 환경을 제공하려면 알림을 그룹화해야 하는 경우 그룹 키와 그룹 요약을 지정하여 그룹화되도록 합니다.