首页 > 解决方案 > 如果用户正在访问它,则在我的网站中显示自定义通知,并且仅当用户没有关注我的网站选项卡时才显示推送通知

问题描述

如果用户没有关注我的网站并且如果用户关注我的网站选项卡,我想显示推送通知,我想显示我的内部站点自定义通知并停止推送通知弹出并分散用户注意力。这在角度8上可行吗?我的意思是就像移动应用程序推送通知一样,我想要前景和背景之类的东西,我显示背景通知,但我在我的应用程序中显示前景通知。我正在使用 Angular 8 推送通知服务和节点 js。我想知道如果不只是使用自定义内部站点通知,我是否可以使用推送通知。

标签: angularpush-notificationservice-worker

解决方案


对的,这是可能的。

pushService Worker 脚本中的事件侦听器中,您可以通过调用self.clients.matchAll()which 返回一个 promise 来获取该 Service Worker 的所有客户端,该 promise 将使用一组客户端对象进行解析。可以检查这些客户端对象的focused属性。如果该focused属性为true,则表示浏览器已将选项卡设为焦点。

然后,根据您获得的客户类型,您可以以某种方式更改通知或完全取消它。您所描述的可能意味着对于专注的客户端,您不会显示通知,而是通过发送消息postMessage API并让前端代码在应用程序中显示自定义“通知”。

此处示例: https ://serviceworke.rs/push-clients_service-worker_doc.html


推荐阅读