打开多个应用程序选项卡时通知未关闭

Posted

技术标签:

【中文标题】打开多个应用程序选项卡时通知未关闭【英文标题】:Notification is not closing when multiple application tabs are open 【发布时间】:2019-11-08 18:53:03 【问题描述】:

当应用程序会话超时时,我会向用户显示一个对话框,说“会话即将超时”,并在对话框“Signout”和“StayLoggedIn”上显示 2 个按钮。

与此对话框一起,我向用户显示桌面通知,警告用户会话超时。

当我点击对话框上的“SignOut”或“StayLoggedIn”按钮时,我也需要关闭通知以及对话框。

我正在使用 Notification.close() 来关闭通知。

当我只打开一个应用程序选项卡时单击对话框按钮时,通知关闭正常。 但是,如果我打开了 2 个应用程序选项卡(例如 - google.com、google.com)并单击其中一个选项卡中的对话框按钮,则会调用 notification.close() 但它不会关闭通知。

有人遇到过类似的问题吗?我被困住了。请需要帮助。仅供参考,我使用的是 Chrome 版本 78。

【问题讨论】:

【参考方案1】:

chrome 中的每个选项卡都是一个新进程。 Windows 10 是与 toast 隔离的进程。 进程 A 中创建的 toast 不能访问进程 B 中创建的 toast,反之亦然。

Toast 通知的实用性随着焦点辅助功能的出现而消失。所以老实说,我会跳过在任何新应用中使用它们。

【讨论】:

如何将焦点放在创建桌面通知的 Chrome 选项卡上?我需要知道哪个窗口创建了通知而不单击通知。 (我知道如果你点击通知,window.focus() 会将你带到创建通知的窗口)

以上是关于打开多个应用程序选项卡时通知未关闭的主要内容,如果未能解决你的问题,请参考以下文章

在通知上选项卡时未触发解析 onPushOpen

关闭选项卡时如何防止调试器停止

切换选项卡时未调用 NSFetchedResultsControllerDelegate 方法

退出浏览器并关闭选项卡时发出警报

套接字 IO:如何定义断开连接的套接字 id(当多个选项卡时)?

在这种情况下推送通知服务的可用性?