代码之家  ›  专栏  ›  技术社区  ›  Savan S

当chrome选项卡打开但未激活时,Firebase通知消息未命中

  •  6
  • Savan S  · 技术社区  · 6 年前

    我已经安装了firebase消息服务,它工作得很好。唯一的问题是 messaging.onMessage 函数我增加了页面上的通知计数。此外,我还有一个service worker设置,可以在后台抛出chrome通知。

    notification bell with counter

    当我的选项卡 打开但未激活 ,则, 消息传递。onMessage 未被命中,但后台处理程序服务人员正在命中。所以我网站上的计数器并没有增加。当用户再次返回“我的网站”选项卡时,它会显示旧的通知计数。这会造成糟糕的用户体验。我在点击count时显示通知列表,就像facebook显示的一样。

    2 回复  |  直到 6 年前
        1
  •  6
  •   looptheloop88    6 年前

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

    背景信息:

    messaging.setBackgroundMessageHandler(function(payload) {
    
         console.log(payload.data.badgeCount);
    
         return self.registration.showNotification(title, options);
    });
    

    对于前景:

    messaging.onMessage(function(payload) {
    
         console.log(payload.data.badgeCount);
    
    });
    

    无论web应用处于前台还是后台状态,分别在onMessage回调和setBackgroundMessageHandler回调中获取有效负载,然后更新UI。

    希望这有帮助:)

        2
  •  0
  •   Mertcan Mermerkaya    6 年前

    当您的网站不在活动选项卡中时,Firebase SDK将显示通知或调用您可以使用 setBackgroundMessageHandler .如果您的有效载荷包括 notification 字段中,将显示通知。否则,将调用您的回调。

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

    看到这个了吗 Firebase guide 了解更多信息。