알림 채널 만들기 및 관리

Android 8.0 (API 레벨 26)부터는 모든 알림을 채널을 구독합니다. 채널별로 적절한 시각적, 청각적 행동을 해당 채널의 모든 알림에 적용됩니다. 사용자가 변경할 수 있는 설정 앱의 어떤 알림 채널이 방해가 되거나 표시됩니다.

다음 동영상에서 채널 및 기타 알림에 대한 개요를 확인하세요. 기능을 살펴봅니다.

알림 채널의 사용자 설정은 시스템 설정을 구성합니다.

그림 1. 시계 앱의 알림 설정 채널 중 하나가 있습니다

알림 채널을 만든 후에는 알림을 변경할 수 없습니다. 확인할 수 있습니다 이 시점에서 사용자가 완전히 제어할 수 있습니다. 하지만 여전히 채널 이름 및 설명 변경

전송해야 하는 알림 유형별로 채널을 만듭니다. 그 외에 알림 채널을 생성하여 사용자의 선택사항을 반영합니다. 예를 들어 대화 그룹별로 별도의 알림 채널을 설정할 수 있으므로 사용자를 식별할 수 있습니다.

Android 8.0 (API 레벨 26) 이상을 대상으로 하는 경우, 하나 이상의 더 많은 알림 채널을 제공할 수 있습니다 targetSdkVersion이 25 이하로 설정된 경우 앱이 Android 8.0 (API 수준 26) 이상에서 실행되면 동일하게 동작합니다. (Android 7.1(API 수준 25) 이하를 실행하는 기기에서)

알림 채널 만들기

알림 채널을 만들려면 다음 단계를 따르세요.

  1. NotificationChannel 객체 고유한 채널 ID, 사용자가 볼 수 있는 이름 및 중요도 수준으로 구성됩니다.

  2. 원하는 경우 시스템 설정에서 사용자에게 표시되는 설명을 지정합니다. 다음 코드로 교체합니다. setDescription()

  3. 알림 채널을 createNotificationChannel()

를 통해 개인정보처리방침을 정의할 수 있습니다.

다음 예는 알림 채널을 만들고 등록하는 방법을 보여줍니다.

Kotlin

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    // Create the NotificationChannel.
    val name = getString(R.string.channel_name)
    val descriptionText = getString(R.string.channel_description)
    val importance = NotificationManager.IMPORTANCE_DEFAULT
    val mChannel = NotificationChannel(CHANNEL_ID, name, importance)
    mChannel.description = descriptionText
    // Register the channel with the system. You can't change the importance
    // or other notification behaviors after this.
    val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
    notificationManager.createNotificationChannel(mChannel)
}

자바

private void createNotificationChannel() {
    // Create the NotificationChannel, but only on API 26+ because
    // the NotificationChannel class is not in the Support Library.
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = getString(R.string.channel_name);
        String description = getString(R.string.channel_description);
        int importance = NotificationManager.IMPORTANCE_DEFAULT;
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
        channel.setDescription(description);
        // Register the channel with the system. You can't change the importance
        // or other notification behaviors after this.
        NotificationManager notificationManager = getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);
    }
}

기존 알림 채널을 원래 값으로 다시 만들면 연산이므로 앱을 시작할 때 이 코드를 호출하는 것이 안전합니다.

기본적으로 특정 채널에 게시되는 모든 알림은 청각적 행동에서 볼 수 있듯이 NotificationManagerCompat 드림 클래스에 관해 IMPORTANCE_DEFAULT 또는 IMPORTANCE_HIGH: 다음에 관한 자세한 내용은 다음 섹션을 참고하세요. 중요도

채널의 기본 알림 동작을 추가로 맞춤설정하려면 다음과 같은 메서드를 호출할 수 있습니다. enableLights()님, setLightColor(), 및 setVibrationPattern() (NotificationChannel) 채널을 만든 후에는 이러한 설정을 변경할 수 없으며, 사용자가 이러한 설정을 변경할지 여부를 활성화되는 것입니다.

또한 다음과 같이 단일 작업으로 여러 개의 알림 채널을 만들 수 있습니다. 통화 createNotificationChannels()

중요도 수준 설정

채널 중요도는 채널을 구독합니다. 다음 중 하나를 사용하여 NotificationChannel 생성자에서 지정합니다. 5가지 중요도 수준부터 IMPORTANCE_NONE(0) ~ IMPORTANCE_HIGH(4)입니다.

Android 7.1 (API 수준 25) 이하를 실행하는 기기를 지원하려면 통화 setPriority() 드림 알림의 경우 NotificationCompat 클래스에 대해 자세히 알아보세요.

중요도 (NotificationManager.IMPORTANCE_*) 및 우선순위 (NotificationCompat.PRIORITY_*) 상수가 사용자에게 표시되는 중요도에 매핑됩니다. 옵션을 선택합니다.

사용자가 볼 수 있는 중요도 수준 중요도(Android 8.0 이상) 우선순위(Android 7.1 이하)
긴급
알림음이 울리며 헤드업 알림으로 표시됩니다.
IMPORTANCE_HIGH PRIORITY_HIGH 또는 PRIORITY_MAX
높음
알림음이 울립니다.
IMPORTANCE_DEFAULT PRIORITY_DEFAULT
보통
소리가 나지 않습니다.
IMPORTANCE_LOW PRIORITY_LOW
낮음
소리가 나지 않으며 상태 표시줄에 표시되지 않습니다.
IMPORTANCE_MIN PRIORITY_MIN
없음
소리가 나지 않으며 상태 표시줄이나 창에 표시되지 않습니다.
IMPORTANCE_NONE N/A

중요도와 관계없이 모든 알림이 방해되지 않는 시스템에 표시됩니다. UI 위치(예: 알림 창 및 런처 아이콘의 배지 하지만 알림 배지의 모양을 수정할 수 있습니다.

채널을 NotificationManager님, 나 변경할 수 없습니다. 하지만 사용자가 언제든지 변경할 수 있습니다.

적절한 우선순위 수준을 선택하는 방법에 대한 자세한 내용은 레벨" 를 알림 디자인 가이드

알림 채널 설정 읽기

사용자는 동작을 포함하여 알림 채널의 설정을 수정할 수 있습니다. 설계되어 있습니다. 사용자의 설정을 확인하려는 경우 '알림 채널'에 적용하려면 다음 단계를 따르세요.

  1. 다음을 호출하여 NotificationChannel 객체 가져오기 getNotificationChannel() 또는 getNotificationChannels()입니다.

  2. 다음과 같은 특정 채널 설정을 쿼리합니다. getVibrationPattern()님, getSound()getImportance():

의도된 행동을 방해한다고 생각되는 채널 설정을 발견한 경우 사용자에게 변경하도록 제안하고 채널 설정을 엽니다.

알림 채널 설정 열기

알림 채널을 만든 후에는 알림을 변경할 수 없습니다. 프로그래매틱 방식으로 채널의 시각적, 청각적 행동을 사용자만 시스템 설정에서 채널 동작을 변경합니다. 사용자에게 이러한 알림 설정에 손쉽게 액세스하고, 앱의 설정 UI를 엽니다.

알림 채널의 시스템 설정을 열 수 있는 Intent: ACTION_CHANNEL_NOTIFICATION_SETTINGS 있습니다.

예를 들어 다음 샘플 코드는 알림 채널 설정:

Kotlin

val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply {
    putExtra(Settings.EXTRA_APP_PACKAGE, packageName)
    putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId())
}
startActivity(intent)

자바

Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName());
intent.putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId());
startActivity(intent);

인텐트에는 앱의 패키지 이름을 지정하는 두 개의 추가 항목이 필요합니다. (애플리케이션 ID라고도 함) 및 수정할 채널이 포함됩니다.

알림 채널 삭제

다음을 호출하여 알림 채널을 삭제할 수 있습니다. deleteNotificationChannel() 다음 샘플 코드는 이 프로세스를 완료하는 방법을 보여줍니다.

Kotlin

// The id of the channel.
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val id: String = "my_channel_01"
notificationManager.deleteNotificationChannel(id)

자바

NotificationManager notificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
notificationManager.deleteNotificationChannel(id);

알림 채널 그룹 만들기

설정 UI에서 채널의 모양을 추가로 구성하려면 채널 그룹을 만들 수 있습니다. 이는 앱이 여러 사용자 계정(예: 직장 프로필을 만들 수 있습니다. 알림 채널 그룹을 만듭니다. 이렇게 하면 사용자가 동일한 이름을 가진 여러 알림 채널을 제어할 수 있습니다.

그림 2. 알림 채널 설정: 개인 및 직장 계정에 대한 그룹입니다.

예를 들어 소셜 네트워킹 앱에는 개인 및 업무 관련 지원이 포함될 수 있습니다. 있습니다. 이 시나리오에서는 계정별로 여러 개의 알림이 필요할 수 있습니다. 동일한 기능 및 이름을 가진 채널을 예로 들 수 있습니다.

  • 채널이 두 개 있는 개인 계정:

    • 새로운 댓글

    • 추천 게시물

  • 채널이 두 개 있는 비즈니스 계정:

    • 새로운 댓글

    • 추천 게시물

알림 채널을 각 계정의 그룹으로 구성하면 사용자는 구별할 수 있어야 합니다.

각 알림 채널 그룹에는 ID가 필요하며 패키지뿐 아니라 사용자가 볼 수 있는 이름일 수도 있습니다. 다음 스니펫은 알림 채널 그룹을 만듭니다.

Kotlin

// The id of the group.
val groupId = "my_group_01"
// The user-visible name of the group.
val groupName = getString(R.string.group_name)
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannelGroup(NotificationChannelGroup(groupId, groupName))

자바

// The id of the group.
String groupId = "my_group_01";
// The user-visible name of the group.
CharSequence groupName = getString(R.string.group_name);
NotificationManager notificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannelGroup(new NotificationChannelGroup(groupId, groupName));

새 그룹을 만든 후 setGroup() 드림 새 NotificationChannel 객체를 그룹과 연결합니다.

알림 관리자에 채널을 제출한 후에는 알림 채널과 그룹 간의 연결입니다.