首页 > 其他分享 >Electron问题记录01:关于electron的notification在win10下不显示问题

Electron问题记录01:关于electron的notification在win10下不显示问题

时间:2022-12-01 01:55:16浏览次数:61  
标签:01 const process notification app Electron electron 右键

0.问题描述

在学习electron官网的notification例程时, 使用官网的代码运行时无法按照预期弹出窗口,在查询官网时发现以下解决方法.

官网解决方法:在 Windows 10 上,您的应用程序的快捷方式必须安装到启动菜单中,包含一个 Application User Model ID. 这可能会在开发过程中被过度杀死,因此将 node_modules\electron\dist\electron.exe 添加到您的开始菜单中也做到了 的技巧。 在Explorer, 右键单击和“Pin 开始菜单”中导航到文件。 然后您需要添加 app.setAppUserModelId(process.execPath) 到主进程才能看到通知。

说实话, 没看太明白, 所以在网上找解决方法, 发现一位网友的解决方法链接

1.解决过程

首先确定运行环境:

  • Electron: v21.3.1
  • Node.js: v16.16.0
  • NPM: v8.11.0

(1)首先确定系统权限有没打开
通知权限打开

如果系统限制了通知显示,那么后续的操作都是无用的,所以先确定下是否都已开启

(2)将Electron主程序添加到开始屏幕

在运行Electron程序时, 打开任务管理器, 找到Electron
image

右键 → 打开文件所在的位置
image

右键 → 固定到"开始"屏幕发送到桌面快捷方式
image

右键 → 发送到桌面快捷方式
image

这样我们就能在开始菜单和桌面上看见Electron的图标了

(3)在main.js中做以下修改

const { app, BrowserWindow } = require("electron");

function createWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
  });

  win.loadFile("index.html");
}

app.whenReady().then(() => {
  createWindow();
  if (process.platform === "win32") {
    app.setAppUserModelId(process.execPath);
  }
  app.on("activate", () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
    }
  });
});

app.on("window-all-closed", () => {
  if (process.platform !== "darwin") {
    app.quit();
  }
});

关键代码如下图:
image

index.html代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Hello World!</title>
    <meta
      http-equiv="Content-Security-Policy"
      content="script-src 'self' 'unsafe-inline';"
    />
  </head>
  <body>
    <h1>Hello World!</h1>
    <p>
      After launching this application, you should see the system notification.
    </p>
    <p id="output">Click it to see the effect in this interface.</p>

    <script src="renderer.js"></script>
  </body>
</html>

renderer.js代码

const NOTIFICATION_TITLE = "Title";
const NOTIFICATION_BODY =
  "Notification from the Renderer process. Click to log to console.";
const CLICK_MESSAGE = "Notification clicked!";

new Notification(NOTIFICATION_TITLE, { body: NOTIFICATION_BODY }).onclick =
  () => (document.getElementById("output").innerText = CLICK_MESSAGE);

终端运行:

npm start

弹出效果:
image

按下弹窗后效果:
image

标签:01,const,process,notification,app,Electron,electron,右键
From: https://www.cnblogs.com/cogito/p/electron_question_record01.html

相关文章

  • jmeter教程01环境、安装
    介绍jmeter是一个开源测试软件,器覆盖了负载、功能、性能、回归测试等类别,需要JDK5或者更高的版本。概述performancetest最佳性能预期,在给定基础架构配置下的。loa......
  • BoCloud博云入选2018-2019中国PaaS市场研究报告
    近日,中国权威ICT研究咨询机构计世资讯发布了《2018~2019年中国PaaS市场现状与发展趋势研究报告》。报告显示,在2018年中国PaaS厂商市场份额中,BoCloud博云占比5.3%,位居前十,在......
  • 探索开源创新之路,BoCloud博云在2018红帽论坛等你
    11月6日,每年一度的开源界盛会“红帽论坛”将在将在北京四季酒店盛大举行,本次2018红帽论坛以“IdeasWorthExploring开源创建,上下求索”为主题,聚焦数字化转型热点,汇聚众多的......
  • 错误例子01
    一Pay类型和double类型不可能赋值。二.把通过有参构造方法传入得到的参数赋值给属性中的变量值......
  • 征稿通知 | 2019亚洲语言处理国际大会(IALP2019)开始征稿
    2019亚洲语言处理国际大会(The2019InternationalConferenceonAsianLanguageProcessing(IALP2019)),将于2019年11月15日—17日在中国上海举行,会议由华东师范大学......
  • BoCloud博云荣获苏州工业园区2019年度“科技研发突出奖”
    3月6日,苏州工业园区召开“建设世界一流高科技园区,打造新时代改革开放新高地”誓师大会。本次会议对2019年度金鸡湖人才、科技工作先进企业等个人与单位进行了表彰。BoCloud......
  • BoCloud博云入选2018中国IT生态新生力量100
    7月26日,每年一度的中国方案商500强(VAR500)榜单在2018中国IT生态大会上发布。该榜单是中国企业IT生态领域的权威调查评选,被认为是中国IT生态发展的风向标。BoCloud博云作为国......
  • 纵观IT进化,解构行业数字化转型 | ITE 2018精彩回放
    12月5日,ITE2018(ITEvolutionConference)·解构行业数字化转型大会活动在北京金隅喜来登酒店圆满落幕,来自全国的数字化转型先锋企业IT负责人、各大IT厂商数字化转型顶尖技术......
  • 每日食词—day012
    axen. v.斧子volatileadj. n.易变的、易失的pushv. n.推送、推入.deploymentn.部署、发布、展开、布局.introducev.介绍、简介.modulesn.......
  • 每日食词—day011
    languagestandardn.语言标准correspondv.相当、相符、相符合、类似于.clickv. n.点击、单击logn. v.日志、记录.barriern.障碍、栅栏、屏障.......