Wear OS의 알림
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
시계의 알림은 스마트폰의 알림과 동일한 API를 사용하고 구조도 동일합니다.
알림은 다음 두 가지 방법으로 시계에 표시할 수 있습니다.
- 모바일 앱에서 알림을 만들고 시스템은 이 알림을 시계에 자동으로 브리징합니다.
- 웨어러블 앱에서 알림을 만듭니다.
두 시나리오에서 모두 NotificationCompat.Builder
클래스를 사용하여 알림을 만듭니다. 빌더 클래스로 알림을 빌드하면 시스템에서는 알림을 올바르게 표시합니다. 예를 들어 모바일 앱에서 알림을 실행하면 각 알림은 알림 스트림에 카드로 표시됩니다.
다음 예를 검토하여 알림이 표시되는 방식을 확인하세요.
그림 1. 스마트폰과 시계에 표시된 동일한 알림
최상의 결과를 얻으려면 NotificationCompat.Style
서브클래스 중 하나를 사용하세요.
참고: RemoteViews
를 사용하면 맞춤 레이아웃의 알림이 제거되며 웨어러블에는 텍스트와 아이콘만 표시됩니다.
웨어러블 기기를 위한 권장 알림
확장형 알림을 모든 알림의 시작점으로
사용하세요. 웨어러블 사용자의 참여를 유도하는 좋은 방법입니다. 축소된 상태는 한눈에 빠르게 파악할 수 있도록 알림 트레이에 표시됩니다. 사용자가 알림을 탭하면 알림이 확장되어
추가 콘텐츠 및 작업이 있는 몰입도 높고 스크롤 가능한 환경이 표시됩니다.
NotificationCompat.Style
서브클래스를 사용하여 휴대기기에서와 동일한 방식으로 확장 가능한 알림을 만들 수 있습니다. 예를 들어 NotificationCompat.MessagingStyle
을 사용하는 표준 알림은 다음과 같습니다.
그림 2. Wear OS에서 MessagingStyle
알림의 예
알림의 확장된 상태 하단에 여러 작업이 스택되어 있는 것을 확인할 수 있습니다.
NotificationCompat.BigPictureStyle
, NotificationCompat.BigTextStyle
, NotificationCompat.InboxStyle
, NotificationCompat.MessagingStyle
의 예는 GitHub의 알림 샘플을 확인하세요.
도움말: 알림에 '답장' 작업이 포함된 경우(예: 메시지 앱) 알림의 동작을 개선할 수 있습니다. 예를 들어 setChoices()
를 사용하여 웨어러블 또는 사전 정의된 텍스트 응답에서 직접 음성 입력 답장을 사용 설정할 수 있습니다.
자세한 내용은 답장 버튼 추가를 참고하세요.
중복 알림 피하기
기본적으로 알림은 연결된 스마트폰 앱에서 페어링된 시계로 브리징됩니다. 이는
웨어러블 앱을 설치하지 않은 경우에 유용합니다.
그러나 독립형 시계 앱과 연결된 스마트폰 앱을 빌드하는 경우 이 두 앱이 중복 알림을 만듭니다.
Wear OS는 Bridging API를 통해 중복 알림을 중지하는 방법을 제공합니다. 이는 Wear OS 5 이상을 실행하는 기기의 앱에 특히 중요합니다. 휴대기기에서 닫을 수 있는 일부 알림은 Wear OS 기기에서 닫을 수 없기 때문입니다.
자세한 내용은 알림 브리징 옵션을 참고하세요.
알림에 웨어러블 관련 기능 추가
알림에 웨어러블 관련 기능(예: 웨어러블 알림에서 앱 아이콘 숨기기 또는 사용자가 음성 입력으로 텍스트 응답을 지정하도록 허용)을 추가해야 하는 경우 NotificationCompat.WearableExtender
클래스를 사용하여 옵션을 지정할 수 있습니다.
이 API를 사용하는 방법은 다음과 같습니다.
WearableExtender
의 인스턴스를 만들고 알림에 관해 웨어러블 관련 옵션을 설정합니다.
NotificationCompat.Builder
의 인스턴스를 만들고 이 가이드에서 앞서 설명한 것처럼 원하는 알림 속성을 설정합니다.
-
알림에서
extend()
를 호출하고 WearableExtender
를 전달합니다. 이렇게 하면 웨어러블 옵션이 알림에 적용됩니다.
build()
를 호출하여 알림을 만듭니다.
참고:
프레임워크의 NotificationManager
를 사용하는 경우
NotificationCompat.WearableExtender
의 일부 기능이 작동하지 않으므로
NotificationCompat
를 사용해야 합니다.
사용자의 기기 전반에서 알림의 닫기 또는 취소를 동기화할 수 있습니다. 닫기를 동기화하려면 setDismissalId()
메서드를 사용하세요. setDismissalId()
를 호출할 때 각 알림에 전역 고유 ID를 문자열로 전달합니다. 알림이 닫히면, 시계 및 연결된 스마트폰에서 동일한 닫기 ID가 있는 다른 모든 알림도 닫힙니다. 닫기 ID를 검색하려면 getDismissalId()
를 사용하세요.
웨어러블 전용 작업 지정
시계와 스마트폰에서 다양한 작업을 실행하려면
WearableExtender.addAction()
을 사용합니다. 이 메서드로 작업을 추가하면 웨어러블에는 NotificationCompat.Builder.addAction()
으로 추가된 다른 작업이 표시되지 않습니다. WearableExtender.addAction()
으로 추가된 작업은 웨어러블에만 표시되고 스마트폰에는 표시되지 않습니다.
웨어러블 기기에서 전화 앱 실행
브리지된 알림을 사용하는 경우 모든 알림에는 휴대전화에서 앱을 실행하는 버튼이 자동으로 포함됩니다. 하지만 시계에서 생성된 로컬 알림을 사용하는 경우 다음 단계에 따라 휴대전화에서 앱을 실행하는 버튼을 만드세요.
ConfirmationActivity
를 확장하는 새 Activity
를 만듭니다.
- 새
Activity
에서 RemoteActivityHelper
을 사용하여 전화 앱을 실행합니다.
- 알림에서
Activity
을 실행하기 위해 Intent
을 빌드할 때 EXTRA_ANIMATION_TYPE
추가를 OPEN_ON_PHONE_ANIMATION
로 설정합니다.
이 접근 방식은 사용자가 휴대전화에서 상호작용하도록 안내하고 백그라운드 프로세스 실행에 관한 플랫폼 요구사항을 따릅니다.
참고: BroadcastReceiver
를 알림 작업의 타겟으로 사용할 수 없습니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Notifications on Wear OS\n\nNotifications on watches use the same APIs and have the same structure as notifications on phones.\n\n\nNotifications can appear on a watch in two ways:\n\n1. A mobile app creates a notification and the system [automatically bridges](/training/wearables/notifications/bridger) that notification to the watch.\n2. A wearable app creates a notification.\n\n\nFor both scenarios, use the\n[NotificationCompat.Builder](/reference/androidx/core/app/NotificationCompat.Builder)\nclass to create notifications. When you build notifications with the builder class, the system\ntakes care of displaying notifications properly. For example, when you issue a notification from\nyour mobile app, each notification appears as a card on the Notification Stream.\n\n\nReview the following example to see how notifications display.\n\n\n**Figure 1.** The same notification displayed on a phone and on a watch.\n\n\nUse one of the\n[NotificationCompat.Style](/reference/androidx/core/app/NotificationCompat.Style)\nsubclasses for the best results.\n\n**Note:**\nUsing [RemoteViews](/reference/android/widget/RemoteViews)\nstrips notifications of custom layouts, and the wearable only displays the text and icons.\n\nRecommended notifications for wearables\n---------------------------------------\n\n\nUse expandable notifications as the starting point for all notifications, as they are\na great way to engage wearable users. The collapsed state displays in the notification\ntray for a short, glanceable experience. If the user taps it, the notification expands,\nrevealing an immersive, scrollable experience of additional content and actions.\n\n\nYou can [Create an expandable notification](/training/notify-user/expanded)\nthe same way you would on mobile, using any of the `NotificationCompat.Style`\nsubclasses. For example, a standard notification using\n[NotificationCompat.MessagingStyle](/reference/androidx/core/app/NotificationCompat.MessagingStyle)\nlooks like this:\n\n\n**Figure 2.** Example of a `MessagingStyle` notification on Wear OS.\n\n\nYou can see the notification has multiple\n[actions](/develop/ui/views/notifications/build-notification#Actions) stacked at the bottom of the\nexpanded state.\n\n\nFor examples of\n[NotificationCompat.BigPictureStyle](/reference/androidx/core/app/NotificationCompat.BigPictureStyle),\n[NotificationCompat.BigTextStyle](/reference/androidx/core/app/NotificationCompat.BigTextStyle),\n[NotificationCompat.InboxStyle](/reference/androidx/core/app/NotificationCompat.InboxStyle),\nand [NotificationCompat.MessagingStyle](/reference/androidx/core/app/NotificationCompat.MessagingStyle),\ncheck out the [Notification sample](https://github.com/android/user-interface-samples/tree/d192c9d2000e43f63cca3eb1b9af05cf2e2ee867/Notifications)\non GitHub.\n\n\n**Tip:** If your notifications include a \"reply\" action, such as for a messaging\napp, you can enhance the behavior of the notification. For example, you can enable voice input\nreplies directly from the wearable or pre-defined text responses with\n[setChoices()](/reference/androidx/core/app/RemoteInput.Builder#setChoices(java.lang.CharSequence[])).\nFor more information, read\n[Add the reply button](/training/notify-user/build-notification#add-reply-action).\n\nAvoid duplicate Notifications\n-----------------------------\n\n\nBy default, notifications are bridged from a companion phone app to any paired watches. This is a\ngreat option if you don't have a wearable app installed.\n\n\nHowever, if you build a standalone watch app and a companion phone app, the apps\ncreate duplicate notifications.\n\n\nWear OS provides a way to stop duplicate notifications with the Bridging APIs. This is\nparticularly important for apps on devices that run Wear OS 5 or higher, because some\nnotifications that are dismissible on a mobile device aren't dismissible on the Wear OS device.\nFor more information, read\n[Bridging options for notifications](/training/wearables/notifications/bridger).\n\nAdd wearable-specific features to a notification\n------------------------------------------------\n\n\nIf you need to add wearable-specific features to a notification, such as hiding\nan app icon from the wearable notification or letting users dictate a text response\nwith voice input, you can use the\n`NotificationCompat.WearableExtender` class to specify the options.\nTo use this API, do the following:\n\n1. Create an instance of a [`WearableExtender`](/reference/androidx/core/app/NotificationCompat.WearableExtender), setting the wearable-specific options for the notification.\n2. Create an instance of `NotificationCompat.Builder`, setting the desired properties for your notification as described earlier in this guide.\n3. Call [`extend()`](/reference/androidx/core/app/NotificationCompat.Builder#extend(androidx.core.app.NotificationCompat.Extender)) on the notification and pass in the `WearableExtender`. This applies the wearable options to the notification.\n4. Call [`build()`](/reference/androidx/core/app/NotificationCompat.Builder#build()) to build the notification.\n\n**Note:**\nIf you use the framework's [NotificationManager](/reference/android/app/NotificationManager),\nsome features from\n`NotificationCompat.WearableExtender` don't work, so make sure to use\n[`NotificationCompat`](/reference/androidx/core/app/NotificationCompat).\n\n\nYou can sync dismissals or cancellations of notifications across the user's devices. To\nsync a dismissal, use the\n[`setDismissalId()`](/reference/androidx/core/app/NotificationCompat.WearableExtender#setDismissalId(java.lang.String)) method. For each notification, pass a globally unique\nID as a string when you call\n`setDismissalId()`. When the notification is dismissed, all other\nnotifications with the same dismissal ID are dismissed on the watch and on the\ncompanion phone. To retrieve a dismissal ID, use\n[`getDismissalId()`](/reference/androidx/core/app/NotificationCompat.WearableExtender#getDismissalId()).\n\nSpecify wearable-only actions\n-----------------------------\n\n\nIf you want different actions available on the watch and the phone, then use\n[`WearableExtender.addAction()`](/reference/androidx/core/app/NotificationCompat.WearableExtender#addAction(androidx.core.app.NotificationCompat.Action)). Once you add an action with this method,\nthe wearable does not display any other actions added with\n[`NotificationCompat.Builder.addAction()`](/reference/androidx/core/app/NotificationCompat.Builder#addAction(androidx.core.app.NotificationCompat.Action)). The actions added with\n`WearableExtender.addAction()` appear only on the wearable, not\non the phone.\n\nLaunch your phone app from a wearable device\n--------------------------------------------\n\n\nIf you are using bridged notifications, any notification automatically includes a button to launch\nthe app on the phone. However, if you are using a local notification, created on the watch, use\nthe following steps to create a button that launches the app on the phone:\n\n1. Create a new `Activity` that extends [`ConfirmationActivity`](/reference/androidx/wear/activity/ConfirmationActivity).\n2. Use [`RemoteActivityHelper`](/reference/androidx/wear/remote/interactions/RemoteActivityHelper) in the new `Activity` to launch the phone app.\n3. When building the `Intent` to launch the `Activity` from the notification, set the [`EXTRA_ANIMATION_TYPE`](/reference/androidx/wear/activity/ConfirmationActivity#EXTRA_ANIMATION_TYPE()) extra to [`OPEN_ON_PHONE_ANIMATION`](/reference/androidx/wear/activity/ConfirmationActivity#OPEN_ON_PHONE_ANIMATION()).\n\nThis approach guides the user to interacting on their phone and follows the platform requirements for launching background processes.\n\n\u003cbr /\u003e\n\n\n**Note:** You can't use a `BroadcastReceiver` as the target\nof the notification action."]]