You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Electron中如何正确修改应用名称及系统通知标签?

Electron中如何正确修改应用名称及系统通知标签?

嘿,我来帮你搞定这个系统通知标签的问题!你遇到的情况其实很常见——app.setName()确实能修改应用窗口标题这类界面元素,但系统级通知显示的“electron.app”是和操作系统识别的应用身份绑定的,光靠运行时设置是改不了的,得从打包配置+运行时补充设置两方面入手。

为什么之前的方法没用?

app.setName()只影响Electron内部的应用名称(比如窗口标题、任务栏显示名),而系统通知的标签是读取你打包后应用的元数据(比如macOS的Bundle ID、Windows的App User Model ID),你在Notification参数里设置的appName很多时候会被系统的应用元数据覆盖,所以才会依然显示“electron.app”。

具体解决方案

1. 主进程补充运行时设置(针对Windows)

在主进程的app.whenReady()回调里,加上app.setAppUserModelId(),给Windows系统一个明确的应用标识:

const { app } = require('electron');

app.whenReady().then(() => {
  app.setName("My Application");
  // 给Windows设置应用模型ID,格式建议用反向域名
  app.setAppUserModelId("com.yourcompany.myapplication");
  // 其他初始化代码...
});

2. 调整打包工具的配置(关键步骤)

不管你用electron-builder还是electron-packager,都需要在配置里明确设置应用名称和平台专属的标识,这样系统才能正确识别你的应用,通知标签也会随之更新。

以最常用的electron-builder为例,在项目根目录的package.json里添加这些配置:

{
  "name": "my-application",
  "productName": "My Application", // 这是应用显示的名称
  "build": {
    "mac": {
      "bundleID": "com.yourcompany.myapplication", // macOS的应用唯一标识
      "icon": "resources/icon.icns" // 对应格式的图标文件
    },
    "win": {
      "appId": "com.yourcompany.myapplication", // Windows的应用ID
      "publisherName": "Your Company Name", // 可选,显示在通知的发布者栏
      "icon": "resources/icon.ico" // Windows格式的图标
    },
    "linux": {
      "appId": "com.yourcompany.myapplication",
      "icon": "resources/icon.png"
    }
  }
}

3. 优化Notification参数(锦上添花)

虽然打包配置是核心,但可以确保你的Notification参数更规范,避免平台兼容问题:

const notification = {
  title: `${CustomNotyTypes[rows[i].notytype]}: ${rows[i].notytitle}`,
  body: nBody,
  timeoutType: "default",
  timeout: 5000,
  // 这里的appName可以和productName保持一致,部分平台会优先用这个(如果打包配置没问题的话,其实系统会自动读取)
  appName: "My Application",
  icon: nativeImage.createFromPath(
    path.join(__dirname, "resources", "icon.png")
  ),
};
new Notification(notification).show();

最后验证

配置完成后,重新打包你的应用,安装后再触发通知,系统就会显示你设置的应用名称,而不是默认的“electron.app”啦!

备注:内容来源于stack exchange,提问作者HappyFuther

火山引擎 最新活动