【问题标题】:show custom notifications in my website if user is visiting it and show push notifications only if user is not focusing my website tab如果用户正在访问它,则在我的网站中显示自定义通知,并且仅当用户没有关注我的网站选项卡时才显示推送通知
【发布时间】:2019-10-22 02:23:02
【问题描述】:
如果用户没有关注我的网站并且如果用户关注我的网站选项卡,我想显示 推送通知 我想显示我的内部网站自定义通知并阻止推送通知弹出和分散注意力用户。这在 angular 8 上可行吗?我的意思是就像移动应用程序推送通知一样,我想要前景和背景之类的东西,我显示背景通知,但我在我的应用程序中显示前景通知。我使用 Angular 8 推送通知服务和节点 js。我想知道我是否可以使用推送通知,如果不只是使用自定义内部站点通知。
【问题讨论】:
标签:
angular
push-notification
service-worker
【解决方案1】:
是的,有可能。
在 Service Worker 脚本中的 push 事件侦听器中,您可以通过调用 self.clients.matchAll() 来获取该 Service Worker 的所有客户端,这将返回一个将使用一组客户端对象进行解析的承诺。可以检查这些客户端对象的 focused 属性。如果focused 属性为true,则表示浏览器已将标签设为焦点。
然后,根据您获得的客户类型,您可以以某种方式更改通知或完全取消通知。您所描述的可能意味着,对于专注的客户端,您不会显示通知,而是通过postMessage API 发送消息,并让前端代码在应用程序中显示自定义“通知”。
这里的例子:
https://serviceworke.rs/push-clients_service-worker_doc.html