Angular 防止在应用程序处于活动状态时显示推送通知(不在后台)

Angular 防止在应用程序处于活动状态时显示推送通知(不在后台),angular,push-notification,service-worker,progressive-web-apps,Angular,Push Notification,Service Worker,Progressive Web Apps,于是我跳上服务人员的列车,推送通知。它似乎工作得很好,但是我不知道当用户在选项卡中处于活动状态(即选项卡处于焦点状态)时,如何抑制浏览器显示的通知。即使在用户使用应用程序时显示通知,也会给他们带来太多麻烦->他们只会关闭通知->如果超过某个阈值,可能会导致邮件无法发送 提到要将config添加到ngsw config.json,所以我确实在其中添加了: "push": { "showNotifications": true, "backgroundOnly": true } 但是,无论

于是我跳上服务人员的列车,推送通知。它似乎工作得很好,但是我不知道当用户在选项卡中处于活动状态(即选项卡处于焦点状态)时,如何抑制浏览器显示的通知。即使在用户使用应用程序时显示通知,也会给他们带来太多麻烦->他们只会关闭通知->如果超过某个阈值,可能会导致邮件无法发送

提到要将config添加到
ngsw config.json
,所以我确实在其中添加了:

"push": {
  "showNotifications": true,
  "backgroundOnly": true
}
但是,无论发生什么情况,始终会显示消息

我是否应该简单地订阅消息,将它们作为数据发送,而不是
通知
并手动显示它们

constructor(swPush: SwPush) {
  if (swPush.isEnabled) {
    swPush.messages.subscribe(message => {
      //display the message if tab is not active
    });
  }
}
如果我这样做,在移动设备上的后台会起作用吗

编辑:这种在代码中决定是否显示消息的方法在Firefox中不起作用,但在Chrome中我得到“”


坦白地说,我不知道如何前进,因为我不知道在SwPush.messages中该做些什么才能让Chrome开心(

我知道有人问这个问题已经有一段时间了,但以防对其他人有所帮助

手工处理怎么样。 实现聚焦和模糊事件。您还可以包括“beforeunload”事件侦听器,以捕获应用程序从聚焦到关闭的情况

如果使用上述事件捕获isActive状态,然后确保仅在isActive为false时发送通知

  @HostListener('window:focus')
  onFocus() {
    isActive = true;
  }

@HostListener('window:blur')
  onBlur() {
    isActive = false;
  }

  // Before window is closed
  @HostListener('window:beforeunload')
  beforeunloadHandler() {
    isActive = false;
  }

你看了吗?@MaximeGélina没有,但这不是问题。这不是用户是否空闲的问题,问题是我确实希望应用程序在后台运行时显示消息(浏览器在PC上启动,在手机上随时[?])但当应用程序打开、在活动选项卡中可见或作为PWA启动时,情况就不一样了。我已经更改了标题,以减少混淆。