Электронные уведомления

Я пытаюсь заставить работать уведомления для приложения 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 ответа

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

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
});

Как было сказано Майком выше, решение действительно должно было идти с узлом-уведомителем. Сначала я не смог заставить его работать напрямую через 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 есть слушатель, который прослушивает это сообщение и выполняет необходимую обработку узла. Там могли быть учебники о том, как это сделать, но я не смог найти ни одного.

Другие вопросы по тегам