如何在 Electron 中使用自定义声音发出跨平台通知?

Cas*_*ams 8 javascript notifications electron

我正在努力寻找有关在 Electron 中使用自定义警报声音正确发出通知的信息。我们如何建议我们在主进程和渲染进程中都这样做?

这是我在主进程中放入的一个示例尝试(我知道路径不是这里的问题),它无论如何都会播放默认声音:

let exNotification = new Notification({
  title: "Example!",
  body: "Here's an example!",
  silent: false,
  sound: path.join(
    app.getAppPath(), "assets/ping.mp3"),
});
exNotification.show();
Run Code Online (Sandbox Code Playgroud)

...即使这确实有效,也仅限于 MacOS。

似乎有各种各样的软件包,但我找不到任何明确的东西来简单说明跨平台工作的“正确”方法是什么。

有很多黑客感觉的建议,例如“使通知静音并使用不同的包同时播放声音”,或者“使用几年来没有更新的第 3 方通知包”,以及我担心这些选择的长期可行性。

有什么建议吗?像大型 Electron 应用程序(如 Slack 或 Discord)那样使用自定义声音进行跨平台通知的“正确”方式是什么?像 Tauri 或其他一些网络应用程序包装器这样的东西是否可以更好地解决我不知道的问题?

Dan*_*nda 1

我认为如果您将通知设置为静音并从应用程序中发出声音,效果会更好。

const sound = require("sound-play");

const exNotification = new Notification({
  title: "Example!",
  body: "Here's an example!",
  silent: true
});

exNotification.show();
sound.play("./{your_path}/assets/ping.mp3");

Run Code Online (Sandbox Code Playgroud)

我还建议使用此模块,这样只有当您的应用程序允许通知时,您才会重现声音。