/node-mac-notifier

Create OS X notifications from Node.js

Primary LanguageObjective-C++MIT LicenseMIT

node-mac-notifier

A native node module that lets you create OS X notifications from Node.js, without spawning a separate process. This is useful for desktop applications built with Electron (or something similar), as it adheres to the HTML5 Notification API. Unlike the Electron notification it also supports replies:

Installation

npm install node-mac-notifier

Run Tests

npm test

Usage

Ensure that this module is called from a renderer process; it will have no effect in the main process. Works with Electron >=0.37.7.

Notification = require('node-mac-notifier');
noti = new Notification('Hello from OS X', {body: 'It Works!'});
noti.addEventListener('click', () => console.log('Got a click.'));

In addition to the standard click event, these notifications also support a (non-standard) reply event. To enable the reply button, set canReply in the options argument. The user's response is included as a parameter on the event:

noti = new Notification('Wow, replies!', {canReply: true});
noti.addEventListener('reply', ({response}) => console.log(`User entered: ${response}`));

API

new Notification(title, options)

title (string) (required)

The title of the notification.

options (Object)

Additional parameters to the notification.

options.id (string)

A string identifying the notification. Maps to NSUserNotification.identifier. A notification with an id matching a previously delivered notification will not be shown. If not provided, defaults to a RFC4122 v4 string.

options.body (string)

The body text. Maps to NSUserNotification.informativeText.

options.subtitle (string)

The subtitle text. Maps to NSUserNotification.subtitle.

options.icon (string)

A URL with image content. Maps to NSUserNotification.contentImage. Should be an absolute URL.

options.soundName (string)

The name of a sound file to play once the notification is delivered. Maps to NSUserNotification.soundName. Set to default to use NSUserNotificationDefaultSoundName, or leave undefined for a silent notification.

options.canReply (bool)

If true, this notification will have a reply action button, and can emit the reply event. Maps to NSUserNotification.hasReplyButton.

options.bundleId (string)

Set this to override the NSBundle.bundleIdentifier used for the notification. This is a brute force way for your notifications to take on the appropriate app icon.

close()

Dismisses the notification immediately.