如何接收和处理 Chrome 通知/推送通知?

Posted

技术标签:

【中文标题】如何接收和处理 Chrome 通知/推送通知?【英文标题】:How to receive and handle Chrome notifications/push-notification? 【发布时间】:2021-04-11 15:25:10 【问题描述】:

我只想编写一个小脚本,每当我从浏览器(chrome)收到推送通知时执行 Foo()。我试图在那里找到一些东西,但我发现的只是如何发送所述通知,但我只想接收它们。任何人都可以引导我朝着正确的方向前进吗?

    我不拥有发送通知的后端 没有前端,来自浏览器的通知 我目前正在尝试使用浏览器扩展,但无法访问通知。我不知道浏览器扩展是否可行,这在我最初的帖子中应该很清楚。

【问题讨论】:

真正的问题是什么?什么有效,什么无效?您是否拥有接收通知的前端和发送通知的后端? "只想写个小脚本"在哪里?在浏览器扩展?你的网页?您想收听从其他来源发送的通知吗? .... 并且在中间时间检查 Notifications_API developer.mozilla.org/en-US/docs/Web/API/Notifications_API @ikiK 我写了一个浏览器扩展来测试,但我可以做任何一个,但找不到任何东西来捕捉通知。我想捕捉来自其他网站的通知。我不想自己发送通知。 WebsiteX 发送通知-> 我的扩展程序捕获到通知并向我显示 json 或其他内容。就是这样。我已经看过通知 api,但这并没有什么帮助,因为它专注于推送通知。 @GuerricP 没有前端,它是来自浏览器的通知,不,我不拥有后端。问题是我不知道如何从我的浏览器扩展中访问通知。我什至不知道浏览器扩展是否适合抓住它。 @mehlichmeyer 这能回答你的问题吗? ***.com/questions/57523910/… 【参考方案1】:

如果问题是关于拦截在网页上使用Notification API 生成的通知,此答案解释了如何:Intercept html5 Web Notifications in a browser environment

总而言之,它包括创建一个Proxy 作为本机Notification 的包装器,以便挂钩到其constructor 并执行任意代码。

如果问题是关于拦截Push Notifications,那么这是不可能的,因为它们是基于Service worker。如文档中所述,您无法连接到服务工作人员,也不能在不覆盖现有服务工作人员的情况下注册自己的服务工作人员(这会破坏网页):

如果有现有的 service worker 可用,则新版本是 已在后台安装,但尚未激活 - 此时它 被称为等待的工人。只有在有的时候才会激活 不再加载任何仍在使用旧服务的页面 工人。一旦没有更多页面要加载,新的 service worker 激活(成为活跃的 worker)。

【讨论】:

以上是关于如何接收和处理 Chrome 通知/推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

推送通知在 Firefox 中工作,但在 React 应用程序中不支持 Chrome

推送通知接收和处理

获取Chrome扩展程序中日历事件的推送通知

使用 chrome 扩展记录/捕获推送通知

如何在应用程序后台接收FCM推送通知数据,但在前台点击

网络推送通知未显示