알림 배지 수정

Android 8.0(API 수준 26)부터 연결된 앱에 활성 알림이 있는 경우 런처 아이콘에 알림 배지(알림 표시 점이라고도 함)가 표시됩니다. 사용자는 앱 아이콘을 길게 터치하여 그림 1과 같이 앱 바로가기와 함께 알림을 표시할 수 있습니다.

이러한 점은 기본적으로 알림 표시 점을 지원하는 런처 앱에 표시되며 앱에서 처리할 작업은 없습니다. 하지만, 알림 표시 점을 표시하지 않거나 표시되는 알림을 정확히 제어하고 싶은 경우도 있습니다.

그림 1. 알림 배지 및 길게 터치 메뉴

배지 사용 중지

배지가 알림에 적합하지 않은 경우 NotificationChannel 객체에서 setShowBadge(false)를 호출하여 채널별로 배지를 사용 중지할 수 있습니다.

예를 들어 다음과 같은 경우 알림 배지를 사용 중지할 수 있습니다.

  • 진행 중인 알림: 이미지 처리, 미디어 재생 컨트롤, 현재 탐색 안내 등 대부분의 진행 중인 알림에는 배지가 무의미합니다.
  • 캘린더 리마인더: 현재 발생한 이벤트에는 배지를 사용하지 마세요.
  • 시계 또는 경보 이벤트: 현재 경보와 관련된 알림에는 배지를 사용하지 마세요.

다음 샘플 코드는 알림 채널의 배지를 숨기는 방법을 보여줍니다.

Kotlin

val id = "my_channel_01"
val name = getString(R.string.channel_name)
val descriptionText = getString(R.string.channel_description)
val importance = NotificationManager.IMPORTANCE_LOW
val mChannel = NotificationChannel(id, name, importance).apply {
    description = descriptionText
    setShowBadge(false)
}
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(mChannel)

자바

String id = "my_channel_01";
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
mChannel.setDescription(description);
mChannel.setShowBadge(false);

NotificationManager notificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(mChannel);

맞춤 알림 수 설정

기본적으로 알림이 발생하면 그림 1과 같이 길게 터치 메뉴에 표시되는 숫자가 1씩 증가하지만 앱에서 이 숫자를 재정의할 수 있습니다. 예를 들어 하나의 알림을 사용하여 여러 개의 새 메시지를 나타내지만 이 숫자로 새 메시지의 총 수를 나타내고 싶은 경우 숫자를 재정의하면 유용합니다.

맞춤 숫자를 설정하려면 다음과 같이 알림에서 setNumber()를 호출합니다.

Kotlin

var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setContentTitle("New Messages")
        .setContentText("You've received 3 new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setNumber(messageCount)
        .build()

자바

Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setContentTitle("New Messages")
        .setContentText("You've received 3 new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setNumber(messageCount)
        .build();

알림의 길게 터치 메뉴 아이콘 수정

길게 터치 메뉴에는 알림과 연관된 큰 아이콘이나 작은 아이콘이 표시됩니다(있는 경우). 기본적으로 시스템에는 큰 아이콘이 표시되지만 Notification.Builder.setBadgeIconType()를 호출하고 BADGE_ICON_SMALL 상수를 전달하여 작은 아이콘을 표시할 수도 있습니다.

Kotlin

var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setContentTitle("New Messages")
        .setContentText("You've received 3 new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL)
        .build()

자바

Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setContentTitle("New Messages")
        .setContentText("You've received 3 new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL)
        .build();

중복 바로가기 숨기기

앱에서 앱 바로가기를 복제하는 알림을 만드는 경우 setShortcutId()를 호출하여 알림이 활성화되어 있는 동안 바로가기를 일시적으로 숨길 수 있습니다.

알림을 사용하는 추가 샘플 코드는 SociaLite 샘플 앱을 참고하세요.