我正在尝试让通知适用于我使用 Angular 5 和 Electron 制作的 Electron 应用程序。到目前为止,我的索引.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"
},
最后我的主要内容是.js:
app.setAppUserModelId("com.myapp.id");
正如我在某处读到的那样,这两者都是使通知工作所必需的。我正在使用电子锻造来构建松鼠安装程序,因为还提到这是让通知工作所必需的。
我尝试在我的角度组件中使用类似的通知代码,但也没有运气。我已经研究了节点通知器,但无法让它工作,主要是由于缺乏对它在 Angular-Electron 应用程序中应该去哪里的理解。
在这一点上,我想要的只是让某种形式的桌面通知工作,但我找不到任何关于如何在 Angular-Electron 应用程序中做到这一点的资源。
您还可以使用Electron服务远程和节点通知器模块获取与angular 5一起工作的电子通知,如下所示:
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");
}
主.js
const notifier = require('node-notifier')
exports.notifier = (msg) => {
notifier.notify({
title: 'Notify Me',
message: msg,
wait: true
});
正如上面 Mike 所说,解决方案确实是使用节点通知程序。起初我无法让它直接通过 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");
}
然后在我的主.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它侦听此消息并执行所需的节点处理。可能有关于如何做到这一点的教程,但我找不到任何教程。