我们的窗口没有退出按钮,且 window-all-close... 笔记

我们的窗口没有退出按钮,且 window-all-closed 是一个空函数。

Notifio 是一款桌面应用程序,旨在通过电子邮件即时通知用户新的租赁房源。其核心价值在于持续运行,即绝不能意外停止。Electron 的默认行为(关闭最后一个窗口即退出应用)与此要求不兼容。因此,Notifio 实现了自定义的生命周期,确保即使主窗口关闭,应用程序仍能在系统托盘中保持活跃。一个布尔标志控制关闭窗口是将其隐藏还是退出应用程序,从而防止意外终止。托盘图标成为退出应用程序的唯一界面,并告知用户应用程序仍在运行。点击托盘图标可切换主窗口的可见性,默认状态为隐藏。该应用程序还强制实施单实例锁,以防止重复进程,避免低效的轮询和冲突的状态。在应用程序运行时再次启动,只会将隐藏的窗口带到前台,而不是启动新实例。睡眠模式带来挑战,因为 Electron 中的浏览器上下文在系统挂起后可能失效。Notifio 主动在系统睡眠前关闭这些上下文,确保返回时能够重新初始化。为防止外部网站在 Notifio 自身的浏览器实例中打开,它使用处理器将所有外部链接重定向到用户的默认浏览器。这对于租赁网站至关重要,因为未经认证的浏览会导致登录墙。在启动失败的情况下(这在打包应用中更为常见),Notifio 会显示一个简化的回退窗口,包含错误详情和日志文件的链接。该窗口刻意保持基本,仅包含必要的信息以协助故障排查。未捕获的异常和未处理的拒绝被记录,以确保全面的错误跟踪。应用程序为不同的操作系统提供单独的构建版本,并清晰地向用户解释其托盘行为和后台轮询机制。