Электронные уведомления - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь заставить работать уведомления для приложения Electron, созданного с помощью Angular 5 и Electron.До сих пор у меня есть следующий код в моем файле index.html:

<script type="text/javascript">

  function doNotify() {
      new Notification( "Basic Notification", "Short message part");
  }

   window.onload = doNotify;
  </script>

В моем package.json у меня есть настройка appId, как показано ниже:

  "build": {
    "appId":"com.myapp.id"
  },

и, наконец, у меня есть этов моем main.js:

app.setAppUserModelId("com.myapp.id");

Как я читал в некоторых местах, оба они необходимы для работы уведомлений.Я использую Electron Forge для создания установщика белка, поскольку также упоминается, что это необходимо для получения уведомлений для работы.

Я пытался использовать аналогичный код уведомления в моих угловых компонентах, но там тоже не повезло.Я посмотрел на узел-уведомитель, но не смог заставить его работать, в основном из-за отсутствия понимания того, куда он должен идти в приложении Angular-Electron.

На данный момент все, что мне нужно, - это заставить работать какую-то форму уведомлений на рабочем столе, но я не могу найти никаких ресурсов о том, как это сделать в приложении Angular-Electron.

Ответы [ 2 ]

0 голосов
/ 16 августа 2018

Вы также можете получать электронные уведомления, работающие с углом 5, используя Удаленный сервис Electron и узел-уведомитель модуль как:

app.component.ts

import { ElectronService } from 'ngx-electron';

constructor(private databaseService: DatabaseService, private router: Router, private 
 _electronService: ElectronService){
}

ngOnInit(): void {
  let main_js  = this._electronService.remote.require("./main.js");
  this.main_js.notifier("Message");
}

main.js

const notifier = require('node-notifier')

exports.notifier = (msg) =>  {
notifier.notify({
  title: 'Notify Me',
  message: msg,
  wait: true
});
0 голосов
/ 07 июля 2018

Как сказал Майк выше, решение действительно должно было идти с узлом-уведомителем.Сначала я не смог заставить его работать напрямую через angular из-за того, что он был модулем узла.После дальнейшего изучения я обнаружил, что в Electron вы можете отправлять сообщения в ipcRenderer, который затем может запустить код / ​​модули узла.Ниже приведен мой код, который использовал это для работы:

В моем угловом файле, с которого я хочу начать уведомление, я добавил:

import { ElectronService } from 'ngx-electron';
//
//Other regular angular code here
//
constructor(private databaseService: DatabaseService, private router: Router, private 
     _electronService: ElectronService){
}

ngOnInit(): void {
    this._electronService.ipcRenderer.send('request-mainprocess-action', "Message");
}

Затем в своем main.js я добавилследующее:

const {ipcMain} = require('electron');
var notifier = require('node-notifier');
//
//Other regular electron main code
//
// Attach listener in the main process with the given ID
ipcMain.on('request-mainprocess-action', (event, arg) => {
    notifier
    .notify({title: 'Title', message: 'Message', icon:`${__dirname}\\assets\\image.png`,  wait: true }, function(err, data) {
      console.log(err, data);
    })
});

В приведенном выше коде происходит то, что в ipcRenderer отправляется сообщение с тегом «request-mainprocess-action».Затем в моем main.js есть прослушиватель, который прослушивает это сообщение и выполняет необходимую обработку узла.Возможно, были учебники о том, как это сделать, но я не смог их найти.

...