электрон: отображать базовое уведомление в приложении Tray - PullRequest
1 голос
/ 16 мая 2019

Я делаю приложение в трее и пытаюсь отобразить базовое уведомление:

Ниже приведены мои main.js-файл и package.json:

мой app / main.js file

 const path = require('path');
    const {
        app,
        globalShortcut,
        Tray,
        Notification
    } = require('electron');

    app.on('ready', () => {
        tray = new Tray(path.join(__dirname, 'icon-light.png'));

        globalShortcut.register('CommandOrControl+Shift+N', () => {
            console.log("Roger");
            let myNotification = new Notification('Title', {
                body: 'Rabbit'
            })

            myNotification.onclick = () => {
                console.log('Notification clicked')
            }
        });
    })

мой файл package.json

{
  "name": "test_notification",
  "version": "1.0.0",
  "description": "",
  "main": "app/main.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "electron": "^5.0.1"
  }
}

Когда я запускаю комбинацию клавиш CommandOrControl + Shift + N, он отображает мне файл console.log, но не уведомление.

Вы знаете, как это сделать?

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Уведомления, отправленные из основного процесса, не используют HTML5 Notification API , но используют вместо модуля Notification ;вот почему предоставленный код правильно получает конструктор Notification, деструктурируя результат require('electron'):

const {
    app,
    globalShortcut,
    Tray,
    Notification
} = require('electron');

Но интерфейс немного отличается:

  • Конструктор принимает только один аргумент options, который включает в себя title:

    let myNotification = new Notification({
        title: 'Title',
        body: 'Rabbit'
    });
    
  • Затем уведомление должно быть явно отображено с использованием tification.show () :

    myNotification.show();
    

tification.show ()

Немедленно показывает уведомление пользователю, обратите внимание, это означаетВ отличие от реализации Уведомления HTML5, создание экземпляра new Notification не сразу показывает его пользователю, вам нужно вызвать этот метод, прежде чем ОС отобразит его.

0 голосов
/ 16 мая 2019

вы пропустили new в следующем коде.

let myNotification = new Notification('Title', {
                body: 'Rabbit'
            })

Ссылка: https://electronjs.org/docs/tutorial/notifications

...