通知系统,每次重新加载时都会在回调时触发 Firebase


Notification system with Firebase triggers on callback on every reload

所以我正在尝试制作一个类似于Facebook系统的通知系统。我有一个在后台运行的 cron 作业,当它觉得需要向用户发送通知时,它会使用 PHP(REST) SDK 向 Firebase 发送推送。在仪表板上,我有一个"on"回调,该回调获取用户的所有传入通知,并为每个传入的新通知显示通知

var push_ref = firebase_ref.on('child_added', function(push) {
    new PNotify({
        title: 'Notification',
        text: push.val().message,
        ...
    });
});

但是,当我重新加载页面时,所有以前发送的通知都会同时弹出,并用通知框填充屏幕。我不想删除发送的推送通知,因为稍后我将创建一个系统来获取它们并将它们放在下拉框中(类似于 Facebook 上的通知下拉列表)。

我的问题是;

如何保留所有已发送的通知,同时禁用 Firebase 在客户端再次上线时返回所有通知?

更新:再次查看他们的文档,发现他们检索的数据类型非常不同。它在"child_Added"下说,它"为每个现有子级触发一次,然后在每次将新子级添加到指定路径时再次触发"。这就是为什么一旦我重新加载包含所有现有子级的页面,就会触发它的原因。

你能看到任何可能适合我的其他类型的类型吗,因为我还没有找到。

您可以让客户端在收到时更新每条消息以确认已显示(设置acknowledged = true或其他)。 然后使用已确认字段筛选 UI 处理,以仅突出显示未确认的消息。

这假设消息是特定于用户的,或者您的数据结构将需要消息/用户映射来保存确认。

如果用户正在读取公共消息流,则可以保存特定于用户的lastReadDate或过滤掉旧消息的内容。