Angular 防止在应用程序处于活动状态时显示推送通知(不在后台)
于是我跳上服务人员的列车,推送通知。它似乎工作得很好,但是我不知道当用户在选项卡中处于活动状态(即选项卡处于焦点状态)时,如何抑制浏览器显示的通知。即使在用户使用应用程序时显示通知,也会给他们带来太多麻烦->他们只会关闭通知->如果超过某个阈值,可能会导致邮件无法发送 提到要将config添加到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 } 但是,无论
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启动时,情况就不一样了。我已经更改了标题,以减少混淆。