Skip to main content

알림 기능

OS 데스크톱 알림 생성

프로세스: 메인

렌더러 프로세스 알림

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

Class: Notification​

OS 데스크톱 알림 생성

프로세스: 메인

Notification은 EventEmitter를 상속한다.

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 문서를 참고한다.