所以我正在尝试制作一个类似于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
或过滤掉旧消息的内容。