알림 기능
OS 데스크톱 알림 생성
프로세스: 메인
렌더러 프로세스에서 알림을 표시하려면 웹 Notifications API를 사용해야 한다.
Class: Notification
OS 데스크톱 알림 생성
프로세스: 메인
Notification
은 EventEmitter를 상속한다.
options
에 설정된 네이티브 속성을 사용해 새로운 Notification
을 생성한다.
정적 메서드
Notification
클래스는 다음과 같은 정적 메서드를 제공한다:
Notification.isSupported()
boolean
타입을 반환한다. 현재 시스템에서 데스크톱 알림이 지원되는지 여부를 나타낸다.
new Notification([options])
인스턴스 이벤트
new Notification
으로 생성된 객체는 다음과 같은 이벤트를 발생시킨다.
일부 이벤트는 특정 운영체제에서만 사용 가능하며, 해당 이벤트에는 그렇게 표시되어 있다.
이벤트: 'show'
반환값:
event
Event
이 이벤트는 사용자에게 알림이 표시될 때 발생한다. show()
메서드를 통해 알림을 여러 번 표시할 수 있으므로, 이 이벤트도 여러 번 발생할 수 있다.
이벤트: 'click'
반환값:
event
Event
사용자가 알림을 클릭할 때 발생한다.
이벤트: 'close'
반환값:
event
이벤트
사용자가 수동으로 알림을 닫을 때 발생한다.
이 이벤트는 알림이 닫히는 모든 경우에 발생한다고 보장되지 않는다.
윈도우에서는 close
이벤트가 세 가지 방식으로 발생할 수 있다: notification.close()
를 통한 프로그램적 해제, 사용자가 알림을 닫는 경우, 시스템 타임아웃에 의한 경우. 만약 알림이 초기 close
이벤트 발생 후 액션 센터에 남아 있다면, notification.close()
를 호출하면 액션 센터에서 알림이 제거되지만 close
이벤트는 다시 발생하지 않는다.
이벤트: 'reply' macOS
반환값:
event
Eventreply
string - 사용자가 인라인 답장 필드에 입력한 문자열
hasReply: true
로 설정된 알림에서 사용자가 "답장" 버튼을 클릭할 때 발생한다.
이벤트: 'action' macOS
반환값:
event
Eventindex
number - 활성화된 액션의 인덱스
이벤트: 'failed' Windows
반환값:
event
Eventerror
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
문서를 참고한다.