Browse Source

:memo: Improve notification docs

Felix Rieseberg 8 years ago
parent
commit
d5c4ad5e2c
3 changed files with 86 additions and 50 deletions
  1. 1 0
      docs/README.md
  2. 0 50
      docs/tutorial/desktop-environment-integration.md
  3. 85 0
      docs/tutorial/notifications.md

+ 1 - 0
docs/README.md

@@ -40,6 +40,7 @@ an issue:
 * [Desktop Environment Integration](tutorial/desktop-environment-integration.md)
 * [Online/Offline Event Detection](tutorial/online-offline-events.md)
 * [REPL](tutorial/repl.md)
+* [Native Notifications](tutorial/notifications.md)
 
 ## API References
 

+ 0 - 50
docs/tutorial/desktop-environment-integration.md

@@ -8,56 +8,6 @@ applications can put a custom menu in the dock menu.
 This guide explains how to integrate your application into those desktop
 environments with Electron APIs.
 
-## Notifications (Windows, Linux, macOS)
-
-All three operating systems provide means for applications to send notifications
-to the user. Electron conveniently allows developers to send notifications with
-the [HTML5 Notification API](https://notifications.spec.whatwg.org/), using
-the currently running operating system's native notification APIs to display it.
-
-**Note:** Since this is an HTML5 API it is only available in the renderer process.
-
-```javascript
-let myNotification = new Notification('Title', {
-  body: 'Lorem Ipsum Dolor Sit Amet'
-})
-
-myNotification.onclick = () => {
-  console.log('Notification clicked')
-}
-```
-
-While code and user experience across operating systems are similar, there
-are fine differences.
-
-### Windows
-
-* On Windows 10, notifications "just work".
-* On Windows 8.1 and Windows 8, a shortcut to your app, with a [Application User
-Model ID][app-user-model-id], must be installed to the Start screen. Note,
-however, that it does not need to be pinned to the Start screen.
-* On Windows 7, notifications are not supported. You can however send
-"balloon notifications" using the [Tray API][tray-balloon].
-
-Furthermore, the maximum length for the notification body is 250 characters,
-with the Windows team recommending that notifications should be kept to 200
-characters.
-
-### Linux
-
-Notifications are sent using `libnotify`, it can show notifications on any
-desktop environment that follows [Desktop Notifications
-Specification][notification-spec], including Cinnamon, Enlightenment, Unity,
-GNOME, KDE.
-
-### macOS
-
-Notifications are straight-forward on macOS, you should however be aware of
-[Apple's Human Interface guidelines regarding notifications](https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/OSXHIGuidelines/NotificationCenter.html).
-
-Note that notifications are limited to 256 bytes in size - and will be truncated
-if you exceed that limit.
-
 ## Recent documents (Windows & macOS)
 
 Windows and macOS provide easy access to a list of recent documents opened by

+ 85 - 0
docs/tutorial/notifications.md

@@ -0,0 +1,85 @@
+# Notifications (Windows, Linux, macOS)
+
+All three operating systems provide means for applications to send notifications
+to the user. Electron conveniently allows developers to send notifications with
+the [HTML5 Notification API](https://notifications.spec.whatwg.org/), using
+the currently running operating system's native notification APIs to display it.
+
+**Note:** Since this is an HTML5 API it is only available in the renderer process.
+
+```javascript
+let myNotification = new Notification('Title', {
+  body: 'Lorem Ipsum Dolor Sit Amet'
+})
+
+myNotification.onclick = () => {
+  console.log('Notification clicked')
+}
+```
+
+While code and user experience across operating systems are similar, there
+are fine differences.
+
+## Windows
+
+* On Windows 10, notifications "just work".
+* On Windows 8.1 and Windows 8, a shortcut to your app, with a [Application User
+Model ID][app-user-model-id], must be installed to the Start screen. Note,
+however, that it does not need to be pinned to the Start screen.
+* On Windows 7, notifications are not supported. You can however send
+"balloon notifications" using the [Tray API][tray-balloon].
+
+Furthermore, in Windows 8, the maximum length for the notification body is 250
+characters, with the Windows team recommending that notifications should be kept
+to 200 characters. That said, that limitation has been removed in Windows 10, with
+the Windows team asking developers to be reasonable. Attempting to send gigantic
+amounts of text to the API (thousands of characters) might result in instability.
+
+### Advanced Notifications
+
+Later versions of Windows allow for advanced notifications, with custom templates,
+images, and other flexible elements. To send those notifications (from either the
+main process or the renderer process), use the userland module
+[electron-windows-notifications](https://github.com/felixrieseberg/electron-windows-notifications),
+which uses native Node addons to send `ToastNotification` and `TileNotification` objects.
+
+While notifications including buttons work with just `electron-windows-notifications`,
+handling replies requires the use of [`electron-windows-interactive-notifications`](https://github.com/felixrieseberg/electron-windows-interactive-notifications), which
+helps with registering the required COM components and calling your Electron app with
+the entered user data.
+
+### Quiet Hours / Presentation Mode
+
+To detect whether or not you're allowed to send a notification, use the userland module
+[electron-notification-state](https://github.com/felixrieseberg/electron-notification-state).
+
+This allows you to determine ahead of time whether or not Windows will silently throw
+the notification away.
+
+## macOS
+
+Notifications are straight-forward on macOS, you should however be aware of
+[Apple's Human Interface guidelines regarding notifications](https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/OSXHIGuidelines/NotificationCenter.html).
+
+Note that notifications are limited to 256 bytes in size - and will be truncated
+if you exceed that limit.
+
+### Advanced Notifications
+
+Later versions of macOS allow for notifications with an input field, allowing the user
+to quickly respond to a notification. In order to send notifications with an input field,
+use the userland module [node-mac-notifier](https://github.com/CharlieHess/node-mac-notifier).
+
+### Do not disturb / Session State
+
+To detect whether or not you're allowed to send a notification, use the userland module
+[electron-notification-state](https://github.com/felixrieseberg/electron-notification-state).
+
+This will allow you to detect ahead of time whether or not the notification will be displayed.
+
+## Linux
+
+Notifications are sent using `libnotify`, it can show notifications on any
+desktop environment that follows [Desktop Notifications
+Specification][notification-spec], including Cinnamon, Enlightenment, Unity,
+GNOME, KDE.