angular - 如果用户正在访问它,则在我的网站中显示自定义通知,并且仅当用户没有关注我的网站选项卡时才显示推送通知
问题描述
如果用户没有关注我的网站并且如果用户关注我的网站选项卡,我想显示推送通知,我想显示我的内部站点自定义通知并停止推送通知弹出并分散用户注意力。这在角度8上可行吗?我的意思是就像移动应用程序推送通知一样,我想要前景和背景之类的东西,我显示背景通知,但我在我的应用程序中显示前景通知。我正在使用 Angular 8 推送通知服务和节点 js。我想知道如果不只是使用自定义内部站点通知,我是否可以使用推送通知。
解决方案
对的,这是可能的。
在push
Service Worker 脚本中的事件侦听器中,您可以通过调用self.clients.matchAll()
which 返回一个 promise 来获取该 Service Worker 的所有客户端,该 promise 将使用一组客户端对象进行解析。可以检查这些客户端对象的focused
属性。如果该focused
属性为true
,则表示浏览器已将选项卡设为焦点。
然后,根据您获得的客户类型,您可以以某种方式更改通知或完全取消它。您所描述的可能意味着对于专注的客户端,您不会显示通知,而是通过发送消息postMessage API
并让前端代码在应用程序中显示自定义“通知”。
此处示例: https ://serviceworke.rs/push-clients_service-worker_doc.html
推荐阅读
- java - 改造 2:从响应数组中提取值
- amazon-web-services - 无法使用 travis ci 在 elasticbeanstalk 中部署 docker 应用程序
- azure-functions - 部署后重新启用旧的 azure 功能
- php - 如何在elementor中添加自定义小部件ICON
- mysql - 在 mysql 表上运行完整搜索
- sftp - 我可以为多个本地环境使用相同的集成运行时服务器吗
- openshift - 在openshift中建立pod之间的相互tls连接
- python - 当我使用合并函数在 python 中合并 2 个数据帧时,行数会减少
- java - 找不到 [SaajSoapMessage 的端点映射,SOAP WS 执行期间出现异常
- android - 应用程序正在运行通知一直显示