向网络中的特定用户发送推送通知

时间:2019-04-01 13:19:00

标签: javascript firebase push-notification firebase-cloud-messaging

对于网络上的一般推送消息,这可能是一个更大的问题,但是我在使用Firebase Cloud Messaging(FCM)向用户发送消息时遇到了麻烦。在单个浏览器上存在多个帐户或用户的边界情况下,就会出现问题。通常,人们不共享手机,所以这对于Android / iOS来说不是问题,我认为现在这种情况已经不那么普遍了,但是人们仍然可以与家人共享或者与网吧或人共享计算机。东西。

当前,每次登录的人启用通知时,我都会将该设备的推送令牌添加到数据库中的数组,然后在向该用户发送推送消息时向所有这些令牌发送通知。尽管这对于移动设备和大多数计算机都很好,但是共享计算机呢?该计算机的其他用户将不断收到与他们不相关的事情的通知。如果这是一台家用计算机,我想它还是可以的,但是如果有人再次使用它,那么在网吧该怎么办?这对其他所有人是否会令人难以置信?此外,如果同一设备上有多个不同的用户都使用通知,该怎么办?然后,两个用户都将收到两个用户的通知。这也不好。

我想不出任何办法来优雅地规避这个问题。也许我可以将当​​前登录用户的userID存储在IndexedDB中,每当有新用户登录时就替换它,并且仅在userID匹配时才弹出通知?我还可以添加一个“到期日期”,以使IndexedDB中的userID在一段时间(如果假设用户未登录2周)后超时。

然后,它也不能完全解决问题,只是使其烦恼程度有所降低,并且还增加了多个用户在同一设备上使用同一帐户的其他问题(即:接收其他人的通知)但在某些情况下不是您自己的)。另外,由于我当前正在向用户订阅的FCM主题发送消息,因此我也必须切换整个后端,因此无法向包含用户ID的某些令牌发送专门的消息。

我想我也可以使用“脏污修复程序”,在这里我只是警告用户通知已发送到DEVICE,而不是USER,并且在共享计算机上启用此通知时要谨慎。

有人以前遇到过(或想到过这个问题)并提出过合理的解决方案吗?我很高兴有建议。我认为我现在会使用“脏污修复程序”,如果可以提出合理的解决方案,可以考虑稍后再做其他事情。当然,无论如何,这可能仅是最多影响约1%用户的一个问题,所以也许我只是想得太多,解决这个问题是不值得的。

0 个答案:

没有答案