当Chrome标签页打开但未激活时,Firebase通知onMessage不会点击

时间:2018-05-05 11:35:56

标签: javascript google-chrome firebase push-notification firebase-cloud-messaging

我已经设置了firebase消息服务,它就像一个魅力。唯一的问题是在messaging.onMessage函数中我增加了页面上的通知计数。此外,我还有服务工作者设置,在后台抛出chrome通知。

notification bell with counter

当我的标签打开但未激活时,messaging.onMessage没有被点击,但后台处理程序服务工作者正在点击。因此,我的网站上的反击并没有增加。当用户再次返回我的网站标签时,它会显示旧的通知计数。这就是创造糟糕的用户体验我正在显示点击计数的通知列表,就像facebook显示一样。

2 个答案:

答案 0 :(得分:4)

我不确定您是如何更新通知徽章计数的。但是,您可以在下面的回调函数中检索整个有效负载:

for background:

messaging.setBackgroundMessageHandler(function(payload) {

     console.log(payload.data.badgeCount);

     return self.registration.showNotification(title, options);
});

for foreground:

messaging.onMessage(function(payload) {

     console.log(payload.data.badgeCount);

});

Web应用程序是处于前台还是后台状态,分别获取onMessage回调和setBackgroundMessageHandler回调中的有效负载,然后更新UI。

希望这会有所帮助:)

答案 1 :(得分:0)

当您的网站不在有效标签中时,Firebase SDK会显示通知或调用您可以使用setBackgroundMessageHandler设置的功能。如果您的有效负载包含notification字段,则会显示通知。否则,将调用您的回调。

我建议您不要发送notification有效负载(您仍然可以在data字段内发送,并编写后台消息处理程序。

有关详细信息,请参阅此Firebase guide