Skip to main content

알림 기능

OS 데스크톱 알림 생성

프로세스: 메인

렌더러 프로세스 알림

렌더러 프로세스에서 알림을 표시하려면 웹 Notifications API를 사용해야 한다.

Class: Notification

OS 데스크톱 알림 생성

프로세스: 메인

NotificationEventEmitter를 상속한다.

options에 설정된 네이티브 속성을 사용해 새로운 Notification을 생성한다.

정적 메서드

Notification 클래스는 다음과 같은 정적 메서드를 제공한다:

Notification.isSupported()

boolean 타입을 반환한다. 현재 시스템에서 데스크톱 알림이 지원되는지 여부를 나타낸다.

new Notification([options])

  • options Object (선택 사항)
    • title string (선택 사항) - 알림 창 상단에 표시될 제목.
    • subtitle string (선택 사항) macOS - 제목 아래에 표시될 부제목.
    • body string (선택 사항) - 제목 또는 부제목 아래에 표시될 본문 텍스트.
    • silent boolean (선택 사항) - 알림 표시 시 OS 알림음을 무시할지 여부.
    • icon (string | NativeImage) (선택 사항) - 알림에 사용할 아이콘. 문자열로 전달할 경우, 로컬 아이콘 파일의 유효한 경로여야 함.
    • hasReply boolean (선택 사항) macOS - 알림에 인라인 답장 옵션을 추가할지 여부.
    • timeoutType string (선택 사항) Linux Windows - 알림의 타임아웃 지속 시간. 'default' 또는 'never'로 설정 가능.
    • replyPlaceholder string (선택 사항) macOS - 인라인 답장 입력 필드에 표시될 플레이스홀더 텍스트.
    • sound string (선택 사항) macOS - 알림 표시 시 재생할 사운드 파일의 이름.
    • urgency string (선택 사항) Linux - 알림의 긴급도. 'normal', 'critical', 'low' 중 하나로 설정 가능.
    • actions NotificationAction[] (선택 사항) macOS - 알림에 추가할 액션. NotificationAction 문서에서 사용 가능한 액션과 제한 사항을 확인하세요.
    • closeButtonText string (선택 사항) macOS - 알림의 닫기 버튼에 표시할 커스텀 제목. 빈 문자열일 경우 기본 지역화 텍스트가 사용됨.
    • toastXml string (선택 사항) Windows - 위의 모든 속성을 대체하는 Windows용 알림의 커스텀 설명. 알림의 디자인과 동작을 완전히 커스터마이징할 수 있음.

인스턴스 이벤트

new Notification으로 생성된 객체는 다음과 같은 이벤트를 발생시킨다.

info

일부 이벤트는 특정 운영체제에서만 사용 가능하며, 해당 이벤트에는 그렇게 표시되어 있다.

이벤트: 'show'

반환값:

  • event Event

이 이벤트는 사용자에게 알림이 표시될 때 발생한다. show() 메서드를 통해 알림을 여러 번 표시할 수 있으므로, 이 이벤트도 여러 번 발생할 수 있다.

이벤트: 'click'

반환값:

  • event Event

사용자가 알림을 클릭할 때 발생한다.

이벤트: 'close'

반환값:

  • event 이벤트

사용자가 수동으로 알림을 닫을 때 발생한다.

이 이벤트는 알림이 닫히는 모든 경우에 발생한다고 보장되지 않는다.

윈도우에서는 close 이벤트가 세 가지 방식으로 발생할 수 있다: notification.close()를 통한 프로그램적 해제, 사용자가 알림을 닫는 경우, 시스템 타임아웃에 의한 경우. 만약 알림이 초기 close 이벤트 발생 후 액션 센터에 남아 있다면, notification.close()를 호출하면 액션 센터에서 알림이 제거되지만 close 이벤트는 다시 발생하지 않는다.

이벤트: 'reply' macOS

반환값:

  • event Event
  • reply string - 사용자가 인라인 답장 필드에 입력한 문자열

hasReply: true로 설정된 알림에서 사용자가 "답장" 버튼을 클릭할 때 발생한다.

이벤트: 'action' macOS

반환값:

  • event Event
  • index number - 활성화된 액션의 인덱스

이벤트: 'failed' Windows

반환값:

  • event Event
  • error string - show() 메서드를 실행하는 동안 발생한 오류

네이티브 알림을 생성하고 표시하는 과정에서 오류가 발생할 때 이 이벤트가 발생한다.

인스턴스 메서드

new Notification() 생성자로 만든 객체는 다음과 같은 인스턴스 메서드를 가진다:

notification.show()

이 메서드는 사용자에게 즉시 알림을 표시한다. 웹 알림 API와 달리, new Notification()을 인스턴스화해도 즉시 알림이 표시되지 않는다. 대신, 이 메서드를 호출해야 운영체제가 알림을 화면에 보여준다.

만약 이전에 같은 알림이 표시된 적이 있다면, 이 메서드는 기존 알림을 닫고 동일한 속성을 가진 새로운 알림을 생성한다.

notification.close()

알림을 닫는다.

윈도우에서 화면에 알림이 보이는 상태에서 notification.close()를 호출하면 알림이 닫히고 Action Center에서 제거된다. 화면에 알림이 더 이상 보이지 않는 상태에서 notification.close()를 호출하면 Action Center에서 알림을 제거하려고 시도한다.

인스턴스 속성

notification.title

알림의 제목을 나타내는 string 타입의 속성이다.

notification.subtitle

notification.subtitle은 알림의 부제목을 나타내는 문자열(string) 프로퍼티다.

notification.body

notification.body는 알림의 본문을 나타내는 문자열(string) 속성이다.

notification.replyPlaceholder는 알림의 답장 입력란에 표시될 플레이스홀더를 나타내는 문자열 속성이다.

notification.sound

notification.sound는 알림의 소리를 나타내는 문자열(string) 프로퍼티이다.

notification.closeButtonText

notification.closeButtonText는 알림의 닫기 버튼에 표시되는 텍스트를 나타내는 문자열 속성이다.

notification.silent는 알림이 무음인지 여부를 나타내는 불리언(boolean) 타입의 프로퍼티이다.

notification.hasReply는 알림에 답장 액션이 있는지 여부를 나타내는 불리언 타입의 속성이다.

notification.urgency Linux

notification.urgency는 알림의 긴급도를 나타내는 문자열 속성이다. 이 속성은 'normal', 'critical', 'low' 중 하나의 값을 가질 수 있다.

기본값은 'low'이며, 더 자세한 내용은 NotifyUrgency를 참고한다.

notification.timeoutType Linux Windows

notification.timeoutType은 알림의 타임아웃 지속 시간을 나타내는 문자열 프로퍼티이다. 이 값은 'default' 또는 'never'로 설정할 수 있다.

timeoutType을 'never'로 설정하면 알림이 만료되지 않는다. 알림은 호출한 API나 사용자가 직접 닫을 때까지 계속 열려 있다.

notification.actions

알림의 동작을 나타내는 NotificationAction[] 타입의 속성이다.

notification.toastXml Windows

notification.toastXml는 알림의 커스텀 Toast XML을 나타내는 문자열 속성이다.

사운드 재생하기

macOS에서는 알림이 표시될 때 재생할 사운드의 이름을 지정할 수 있다. 기본 사운드(System Preferences > Sound에서 확인 가능)뿐만 아니라 커스텀 사운드 파일도 사용할 수 있다. 단, 사운드 파일은 앱 번들 내부(예: YourApp.app/Contents/Resources) 또는 다음 위치 중 하나에 복사되어 있어야 한다:

  • ~/Library/Sounds
  • /Library/Sounds
  • /Network/Library/Sounds
  • /System/Library/Sounds

더 자세한 내용은 NSSound 문서를 참고한다.