* Output of `node_modules/.bin/electron --version`: Affects all Electron versions
* Operating System (Platform and Version): macOS 10.13.6
* Output of `node_modules/.bin/electron --version` on last known working Electron version (if applicable): Affects all Electron versions

**Expected Behavior**

Notifications posted by [systemPreferences.postNotification](https://electronjs.org/docs/api/system-preferences#systempreferencespostnotificationevent-userinfo-macos) should be delivered to subscribers immediately no matter whether subscriber app is active or not.

**Actual behavior**

Notifications are suspended until the receiving app gets activated.

**To Reproduce**

Fiddle:
- https://gist.github.com/turbobabr/e4021ab39126e3afc8ea1cc01e99b5d0

(can be opened by [Electron Fiddle](https://github.com/electron/fiddle))

**Screenshots**

A tiny screencast explaining the problem (using the same electron app as a notification subscriber and emulating issue by deactivating the app and posting notification using global shortcut) :
![screen recording 2018-11-21 12 38 23 copy](https://user-images.githubusercontent.com/6356526/48819835-f4056a00-ed8c-11e8-922f-d9679e7c4296.gif)

**Additional Information**

[systemPreferences.postNotification](https://electronjs.org/docs/api/system-preferences#systempreferencespostnotificationevent-userinfo-macos) method uses [NSDistributedNotificationCenter](https://developer.apple.com/documentation/foundation/nsdistributednotificationcenter#1651293?language=objc) behind the scene, but it uses a wrong selector to post notifications to it.

Instead of using this selector (✅):
- [-NSDistributedNotificationCenter.postNotificationName:object:userInfo:deliverImmediately:](https://developer.apple.com/documentation/foundation/nsdistributednotificationcenter/1418360-postnotificationname?language=objc), where `deliverImmediately` is set to `TRUE`

It uses an inherited selected from a parent class (🚫):
- [-NSNotificationCenter.postNotificationName:object:userInfo:](https://developer.apple.com/documentation/foundation/nsnotificationcenter/1410608-postnotificationname?language=objc)

All this makes the powerful tool called `NSDistributedNotificationCenter`, widely used for inter-process communications - completely useless, since all the posted notifications are suspended by default and can reach external applications only in case they are active. 

**Possible solution**

I suggest that this method should use a correct `NSDistributedNotificationCenter`'s selected by default:
- https://github.com/electron/electron/blob/ec38561254c22f18166558be9737e558ad5382a0/atom/browser/api/atom_api_system_preferences_mac.mm#L86

Alternatively, it's a good idea to add additional parameter to `postNotification` method to avoid breaking changes in the behavior:
```js
systemPreferences.postNotification(event,userInfo,deliverImmediately)
// deliverImmediately: Bool - defaults to false
``` 

atom/browser/api/atom_api_system_preferences.h
}
namespace atom {
namespace api {
#if defined(OS_MACOSX)
enum NotificationCenterKind {
  kNSDistributedNotificationCenter = 0,
  kNSNotificationCenter,
  kNSWorkspaceNotificationCenter,
};
#endif
class SystemPreferences : public mate::EventEmitter<SystemPreferences>
#if defined(OS_WIN)
    ,
                          public BrowserObserver,
                          public gfx::SysColorChangeListener
#endif
{
 public:
  static mate::Handle<SystemPreferences> Create(v8::Isolate* isolate);
  static void BuildPrototype(v8::Isolate* isolate,
                             v8::Local<v8::FunctionTemplate> prototype);