모바일 앱의 Notification Action: 개념, 유형 및 설정

저자: IT Sectr 게시일: 2026-03-21 읽는 시간: 8 분

Notification Action — 푸시 알림에 직접 표시되어 사용자가 앱을 열지 않고도 작업을 수행할 수 있는 대화형 버튼 및 입력 필드입니다. 이는 사용자 경험의 핵심 요소로, 대상 화면까지의 경로를 단축합니다. Android Developers, 2025에 따르면, Notification Action은 상호작용의 마찰을 줄여 사용자 참여도를 최대 40%까지 높입니다.

핵심 사항

  • Notification Action — 빠른 작업 실행을 위한 푸시 알림의 대화형 요소.
  • Android에서는 PendingIntent와 NotificationCompat.Action.Builder를 통해 작업이 구현됩니다.
  • iOS에서는 UNNotificationAction과 UNNotificationCategory를 통해 작업이 구성됩니다.
  • 버튼, 텍스트 입력, 완료 표시, 지연된 작업이 지원됩니다.
  • 각 작업은 탭 시 앱의 콜백에서 처리되어야 합니다.

Notification Action이란

Notification Action은 특정 작업을 수행하기 위해 푸시 알림에 추가되는 대화형 인터페이스 요소입니다. 사용자는 앱에 들어가지 않고도 메시지에 답장하거나, 작업을 확인하거나, 특정 화면을 열 수 있습니다. 작업은 알림 텍스트 아래에 버튼으로 표시되거나 스와이프 시 확장된 보기로 나타납니다.

알림에 작업이 필요한 이유

Notification Action의 주요 목적은 사용자가 목표에 도달하기 위한 단계 수를 줄이는 것입니다. 앱을 열고 원하는 화면으로 이동하는 대신 사용자는 하나의 버튼을 누르면 됩니다. 연구에 따르면 대화형 알림이 있는 앱은 단순 알림에 비해 25~40% 더 높은 참여율을 보입니다.

다양한 플랫폼에서의 시각적 표현

Android에서는 Notification Action이 컴팩트 보기에서 아이콘 버튼으로, 확장 가능 모드에서는 텍스트 버튼으로 표시됩니다. iOS에서는 알림을 길게 누르거나 왼쪽으로 스와이프하면 작업이 나타납니다. 각 플랫폼에는 작업 수에 대한 자체 권장 사항이 있습니다. Android는 최대 3개, iOS는 최대 4개를 권장합니다.

플랫폼최대 작업 수표시 방법작업 유형
Android3아이콘 + 텍스트버튼, 텍스트 입력
iOS4길게 누르기 / 스와이프버튼, 텍스트 입력

Android의 Notification Action

Android에서는 NotificationCompat.Builder를 사용하여 addAction() 메서드로 Notification Action을 만듭니다. 각 작업에는 아이콘, 텍스트 및 탭 시 실행되는 PendingIntent가 포함됩니다. Android 7.0(API 24)부터 RemoteInput을 통한 직접 텍스트 입력이 지원됩니다.

기본 작업 만들기

알림에 버튼을 만들려면 탭 시 실행될 PendingIntent를 정의해야 합니다. PendingIntent는 Activity를 열거나 Service 또는 BroadcastReceiver를 시작할 수 있습니다. 작업 아이콘은 단색이어야 하며 Material Design을 준수해야 합니다.

kotlin
val acceptIntent = Intent(context, AcceptActionReceiver::class.java)
acceptIntent.putExtra("notification_id", notificationId)

val acceptPendingIntent = PendingIntent.getBroadcast(
    context, requestCode,
    acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT
)

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.ic_notification)
    .setContentTitle("확인 요청")
    .setContentText("작업 완료를 확인하세요")
    .addAction(R.drawable.ic_accept, "확인", acceptPendingIntent)
    .build()

텍스트 입력이 있는 작업 (RemoteInput)

텍스트 입력이 필요한 시나리오(예: 메시지에 답장)의 경우 Android는 RemoteInput을 제공합니다. 사용자가 알림에 직접 텍스트를 입력하면 앱이 Activity를 열지 않고도 이를 수신합니다. RemoteInput은 Android 7.0+에서 지원되며 BroadcastReceiver 또는 Service에서 명시적 처리가 필요합니다.

kotlin
val remoteInput = RemoteInput.Builder("reply_input")
    .setLabel("답변 입력")
    .build()

val replyAction = NotificationCompat.Action.Builder(
    R.drawable.ic_reply, "답변", replyPendingIntent
)
    .addRemoteInput(remoteInput)
    .build()

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
    .addAction(replyAction)
    .build()

Android에서 작업 처리

작업이 탭되면 시스템은 지정된 PendingIntent를 실행합니다. RemoteInput을 통해 입력된 텍스트를 검색하려면 RemoteInput.getResultsFromIntent(intent)를 호출합니다. UI 스레드를 차단하지 않도록 IntentService 또는 WorkManager에서 작업을 처리하는 것이 좋습니다.

iOS의 Notification Action

iOS에서는 UserNotifications 프레임워크를 통해 Notification Action이 구현됩니다. 개발자는 작업 카테고리(UNNotificationCategory)를 만들고 앱 시작 시 등록합니다. 각 작업은 고유 식별자가 있는 UNNotificationAction 객체로 정의됩니다.

iOS에서 카테고리 및 작업 설정

iOS의 푸시 알림에 작업을 추가하려면 관련 작업을 그룹화하는 카테고리를 만들어야 합니다. 카테고리는 category 필드를 통해 알림 페이로드에 지정됩니다. 알림을 수신하면 시스템이 지정된 카테고리에서 사용 가능한 작업을 표시합니다.

swift
import UserNotifications

class NotificationSetup {

    func registerNotificationCategories() {
        let approveAction = UNNotificationAction(
            identifier: "APPROVE_ACTION",
            title: "승인",
            options: [.foreground]
        )

        let declineAction = UNNotificationAction(
            identifier: "DECLINE_ACTION",
            title: "거부",
            options: [.destructive]
        )

        let category = UNNotificationCategory(
            identifier: "REQUEST_CATEGORY",
            actions: [approveAction, declineAction],
            intentIdentifiers: [],
            options: []
        )

        UNUserNotificationCenter.current()
            .setNotificationCategories([category])
    }
}

iOS에서 작업 처리

사용자가 작업을 탭하면 시스템이 UNUserNotificationCenter 델리게이트에서 userNotificationCenter:didReceiveNotificationResponse 메서드를 호출합니다. response.actionIdentifier에는 실행된 작업의 식별자가 포함됩니다. 텍스트 입력의 경우 사용자가 입력한 텍스트를 제공하는 UNTextInputNotificationAction이 사용됩니다.

swift
extension AppDelegate: UNUserNotificationCenterDelegate {

    func userNotificationCenter(
        center: UNUserNotificationCenter,
        didReceive response: UNNotificationResponse,
        withCompletionHandler completionHandler: @escaping () -> Void
    ) {
        switch response.actionIdentifier {
        case "APPROVE_ACTION":
            Log.d("Action: approved")
        case "DECLINE_ACTION":
            Log.d("Action: declined")
        case UNNotificationDefaultActionIdentifier:
            Log.d("Action: opened app")
        default:
            break
        }
        completionHandler()
    }
}

Notification Action의 유형 및 시나리오

Notification Action은 상호작용 유형과 사용 시나리오에 따라 분류됩니다. 작업 유형의 올바른 선택은 사용자 경험과 목표 작업으로의 전환에 직접적인 영향을 미칩니다.

앱 실행 버튼

가장 일반적인 유형 — 특정 화면에서 앱을 여는 버튼입니다. Android에서는 PendingIntent.getActivity()를 사용하고, iOS에서는 UNNotificationAction의 .foreground 옵션을 사용합니다. 주문 세부 정보 보기와 같이 전체 인터페이스가 필요한 작업에 사용됩니다.

백그라운드 작업

앱을 열지 않고 실행되는 작업입니다. Android에서는 PendingIntent.getBroadcast() 또는 PendingIntent.getService()를 사용합니다. iOS에서는 .authenticationRequired 옵션 또는 .foreground 없이 사용합니다. 예: 작업 완료 표시, 게시물 좋아요, 즐겨찾기에 추가.

텍스트 입력

사용자가 알림에 직접 텍스트를 입력할 수 있습니다. Android에서는 RemoteInput을 통해, iOS에서는 UNTextInputNotificationAction을 통해 구현됩니다. 메시지 답장, 댓글, 일회성 확인 코드 입력에 사용됩니다.

파괴적 작업

데이터를 되돌릴 수 없게 변경하는 작업 — 삭제, 거부, 차단. Android에서는 시각적으로 강조 표시되며(일부 시스템에서 빨간색), iOS에서는 .destructive 옵션이 필요합니다. 파괴적 작업의 경우 추가 대화상자나 두 번째 탭을 통해 확인을 요청하는 것이 좋습니다.

텍스트 입력이 있는 입력 작업

별도의 작업 클래스 — 알림에서 직접 텍스트를 입력합니다. Android에서는 PendingIntent와 결합된 RemoteInput을 통해 구현됩니다. iOS에서는 UNNotificationAction을 상속하는 UNTextInputNotificationAction이 사용됩니다. 이러한 작업은 메신저의 빠른 답장, 프로모션 코드 입력, 피드백 양식 작성 또는 서비스 품질 평가에 사용됩니다. 입력된 텍스트는 작업 식별자와 함께 앱에 전달됩니다. 두 플랫폼에서 텍스트 입력을 올바르게 처리하려면 대상 작업을 실행하기 전에 입력된 데이터의 구문 분석 및 유효성 검사를 구현해야 합니다.

탭 처리 및 로깅

올바른 Notification Action 처리는 분석 및 사용자 경험에 중요합니다. 각 탭은 기록되어야 하며 앱이 종료된 경우에도 작업이 안정적으로 실행되어야 합니다.

분석 및 추적

분석 시스템을 통해 각 Notification Action 탭을 추적하세요. Firebase Analytics, Mixpanel 또는 Yandex.Metrica를 사용하면 작업 식별자, 탭 시간 및 알림 컨텍스트를 기록할 수 있습니다. 이 데이터는 알림 전략을 최적화하고 참여도를 높이는 데 도움이 됩니다. 다양한 작업 세트를 사용한 A/B 테스트는 사용자와의 가장 효과적인 상호작용 시나리오를 식별하는 데 도움이 됩니다.

앱 종료 시 안정적인 처리

앱이 종료된 경우에도 작업이 탭되면 시스템은 Intent 또는 UNNotificationResponse를 전달합니다. Android에서는 안정적인 처리를 위해 BroadcastReceiver를 사용하세요. iOS에서는 시스템이 백그라운드에서 앱을 실행하고 델리게이트에 응답을 전달합니다. 중요한 작업(결제 확인, 인증)의 경우 재시도 메커니즘을 추가하고 성공적인 완료를 사용자에게 알리세요.

Android에서 버튼 시각적 사용자 지정

Android 7.0부터 개발자는 아이콘과 색상을 통해 Notification Action의 모양에 영향을 줄 수 있습니다. 아이콘은 단색(알파 채널), 크기 24x24 dp여야 합니다. iOS에서는 버튼 사용자 지정이 제한적이며 시스템 색상과 글꼴이 사용됩니다. Material Design은 우선순위에 따라 작업을 그룹화할 것을 권장합니다. 가장 중요한 작업을 먼저, 파괴적인 작업을 마지막에 배치합니다.

자주 묻는 질문

하나의 알림에 몇 개의 작업을 추가할 수 있나요?

Android는 최대 3개, iOS는 최대 4개의 작업을 권장합니다. 제한을 초과하면 일부 작업이 표시되지 않거나 하위 메뉴에 숨겨집니다.

Android에서 Notification Action에 아이콘을 추가하려면 어떻게 하나요?

아이콘은 NotificationCompat.Action.Builder에 drawable 리소스로 전달됩니다. 아이콘은 단색(알파 채널), 크기 24x24 dp여야 하며 Material Design 지침을 준수해야 합니다.

Notification Action은 잠금 화면에서 작동하나요?

네, 알림이 잠금 화면에 표시되고 visibility 플래그가 VISIBILITY_PUBLIC으로 설정된 경우 작동합니다. iOS에서는 인증이 필요한 작업에 .authenticationRequired 옵션이 필요합니다.

앱이 메모리에서 제거된 경우 작업 탭을 처리하려면 어떻게 하나요?

Android에서는 시스템이 프로세스를 다시 만들고 Intent를 전달합니다. iOS에서는 시스템이 백그라운드에서 앱을 실행합니다. 안정적인 전달은 Android에서 BroadcastReceiver를, iOS에서 UNNotificationServiceExtension을 사용하여 달성할 수 있습니다.

Android와 iOS의 작업 사용자 경험은 어떻게 다른가요?

Android에서는 알림 바로 아래에 아이콘으로 작업이 표시됩니다. iOS에서는 길게 누르기 또는 스와이프 뒤에 작업이 숨겨져 있습니다. 알림의 UX 디자인은 이러한 플랫폼 차이를 고려해야 합니다.

요약

  • Notification Action — 빠른 상호작용을 위한 푸시 알림의 버튼 및 입력 필드.
  • Android에서는 PendingIntent와 함께 NotificationCompat.Action을 통해 작업이 생성됩니다.
  • iOS에서는 카테고리 등록과 함께 UNNotificationAction을 통해 작업이 정의됩니다.
  • 텍스트 입력은 RemoteInput(Android) 또는 UNTextInputNotificationAction(iOS)을 통해 구현됩니다.
  • 최대 작업 수 — Android 3개, iOS 4개.
  • 각 작업은 알림 최적화를 위해 분석 시스템에 기록되어야 합니다.
  • 안정적인 처리를 위해 Android에서는 BroadcastReceiver, iOS에서는 AppDelegate를 사용하세요.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기