我已经设置了firebase消息服务,它就像一个魅力。唯一的问题是在messaging.onMessage
函数中我增加了页面上的通知计数。此外,我还有服务工作者设置,在后台抛出chrome通知。
当我的标签打开但未激活时,messaging.onMessage
没有被点击,但后台处理程序服务工作者正在点击。因此,我的网站上的反击并没有增加。当用户再次返回我的网站标签时,它会显示旧的通知计数。这就是创造糟糕的用户体验我正在显示点击计数的通知列表,就像facebook显示一样。
答案 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。