Android 알림 채널 설계, 중요도와 POST_NOTIFICATIONS를 분리하는 법

라벨 없는 안드로이드 스마트폰과 색이 다른 빈 알림 카드, 자연광 책상

AI를 활용하여 생성한 이미지입니다.

Android 알림이 안 보일 때 앱 코드만 보면 원인을 놓치기 쉬워요. Android 8.0부터는 모든 알림이 채널에 들어가야 하고, Android 13부터는 대부분의 알림에 POST_NOTIFICATIONS 런타임 권한이 추가됐습니다. 채널의 중요도와 앱 전체 알림 권한은 서로 다른 층이라서, 하나만 허용해도 알림이 보인다고 보장할 수 없어요.[1][2]

채널과 권한은 다른 문제예요

층 결정하는 것 진단 질문
앱 권한 앱이 알림을 게시할 수 있는지 사용자가 POST_NOTIFICATIONS를 허용했나?
알림 채널 소리·진동·표시 위치와 방해 수준 해당 채널이 차단되거나 낮은 중요도로 바뀌었나?
개별 알림 제목·내용·그룹·카테고리 올바른 채널 ID와 알림 카테고리를 사용했나?

앱 권한이 거부되면 대부분의 채널이 막히지만, 권한이 허용돼도 사용자가 특정 채널을 차단하거나 중요도를 낮출 수 있어요. 반대로 채널을 높은 중요도로 만든다고 해서 사용자의 선택을 다시 덮어쓸 수 있는 것도 아닙니다. 채널의 시각·청각 동작은 사용자가 시스템 설정에서 바꿀 수 있고, 등록한 뒤 앱이 중요도를 마음대로 바꾸지 못합니다.[1][3]

채널 ID를 처음부터 안정적으로 정해요

채널 ID는 화면에 보이는 이름과 별개의 고정 식별자예요. “업무”, “메시지”, “백그라운드 작업”처럼 실제 사용 목적이 다른 흐름을 나누고, 번역되는 표시 이름과는 분리하세요. 같은 목적의 알림이 앱 업데이트 때 새 ID로 쪼개지면 사용자가 이전에 조정한 설정이 새 채널에 이어지지 않을 수 있습니다.

val channel = NotificationChannel(
    "sync_status",
    "동기화 상태",
    NotificationManager.IMPORTANCE_LOW
).apply {
    description = "백그라운드 동기화 결과"
}
notificationManager.createNotificationChannel(channel)

Android Developers는 채널을 만든 뒤 중요도와 기본 동작을 프로그램에서 바꿀 수 없다고 설명해요. 따라서 처음부터 긴급 알림과 조용한 진행 상태를 같은 채널에 넣지 말고, 사용자가 각각 조정할 수 있게 분리하는 편이 낫습니다.[1]

Android 13 권한 요청 시점을 정해요

Android 13 이상에서는 앱이 처음 설치된 뒤 알림 권한이 기본적으로 꺼진 상태에서 시작할 수 있어요. 기능 설명 없이 앱 시작과 동시에 권한 창을 띄우기보다, 사용자가 알림을 실제로 켜려는 맥락에서 왜 필요한지 보여 준 뒤 요청하는 방식이 이해하기 쉽습니다.[2]

  • 매우 중요한 알림과 단순 상태 알림을 먼저 구분하기
  • 알림이 없어도 앱의 핵심 기능이 동작하는지 결정하기
  • 권한 거부 뒤 앱 내부 설정에서 다시 시스템 설정으로 이동할 경로 제공하기
  • 권한 허용과 채널 차단을 각각 진단해 안내하기

사용자 설정을 읽고 안내하기

채널을 게시할 때마다 중요도를 다시 설정하려고 하지 말고, getNotificationChannel() 또는 getNotificationChannels()로 현재 상태를 읽어 보세요. 앱 권한은 areNotificationsEnabled() 같은 상태와 함께 확인해야 합니다. 사용자가 채널을 낮췄다면 “권한을 허용하세요”라고만 쓰지 말고 어떤 채널이 조용해졌는지 앱 설정 화면으로 연결하는 것이 정확해요.[3]

특히 백그라운드 작업은 높은 중요도를 남용하기 쉽습니다. 진행률이나 동기화 완료처럼 나중에 확인해도 되는 정보는 낮은 중요도로 두고, 실제로 즉시 행동이 필요한 알림만 높은 중요도를 검토하세요. 높은 설정을 많이 만들수록 사용자는 앱 전체 알림을 꺼 버릴 가능성이 커집니다.

배포 전 확인 항목

  1. Android 8 이하와 8 이상에서 채널·우선순위 동작을 나눠 테스트하기
  2. Android 13 이상에서 허용·거부·다시 허용 흐름을 각각 테스트하기
  3. 채널 하나를 사용자가 차단하거나 낮춘 뒤 앱이 정확한 안내를 보여 주는지 확인하기
  4. 앱 업데이트 뒤 기존 채널 ID와 사용자 설정이 유지되는지 확인하기
  5. 포그라운드 서비스, 메시지, 동기화 상태를 목적별 채널로 분리하기

앱 링크처럼 설정 파일과 운영 서버의 연결도 함께 점검해야 한다면 Android App Links 검증 실패를 나누어 진단하는 글을 이어서 볼 수 있어요.

기존 앱 업데이트에서 조심할 점

이미 출시한 앱의 채널 ID를 바꾸는 것은 단순한 이름 변경이 아니에요. 사용자가 이전 채널에서 꺼 둔 알림을 새 채널에서는 다시 받게 될 수 있고, 반대로 중요한 알림이 이전 설정에 묶여 계속 조용할 수도 있습니다. 이름이나 설명을 고치는 것과 채널 목적을 바꾸는 것은 분리해서 배포하세요.

테스트 기기에서만 권한을 허용한 상태로 확인하면 실제 사용자의 설정을 놓치기 쉽습니다. 새 설치, 업그레이드, 권한 거부, 채널 차단, 시스템 설정에서 중요도 변경을 각각 초기화해 보고, 앱이 보여 주는 안내가 현재 상태와 맞는지 확인해야 합니다. Android 문서가 말하는 채널 동작을 앱의 사용자 경험으로 번역하는 과정이 필요한 이유예요.

알림 채널을 잘 나누면 사용자에게 선택권을 주면서도 운영팀이 어떤 종류의 알림이 막혔는지 추적하기 쉬워집니다. 단, 시스템 설정의 표시 이름만 보고 채널 ID를 추정하지 말고 앱이 기록한 실제 ID와 현재 중요도를 함께 확인하세요. 같은 알림이 여러 채널로 중복 게시되는지도 테스트 로그에서 확인해야 합니다.

Sources

함께 읽을 글