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

时间:2015-01-29 06:31:58

标签: javascript php push-notification firebase

所以我试图制作类似于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"它"is triggered once for each existing child and then again every time a new child is added to the specified path"。这就是为什么一旦我重新加载包含所有现有孩子的页面就会触发它。

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

1 个答案:

答案 0 :(得分:3)

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

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

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