FCM将通知推送到将在客户端进行过滤的所有设备

时间:2018-03-15 09:51:53

标签: android firebase firebase-realtime-database firebase-cloud-messaging

好的,我知道这个问题可能听起来很愚蠢。我正在构建一个应用程序,其中有发布帖子的页面,用户可以订阅/取消订阅这些页面。

此处的目标是找到一种方法,以便在发布新帖子时发送通知,但仅限于订阅用户。我可以通过在Firebase数据库上更新“帖子”参考时向我的应用程序上的所有设备发送推送通知来执行此操作,然后选择是否显示此通知(如果用户已订阅)(在客户端) )

这是个好主意吗?如果是的话,我该如何实现呢?

3 个答案:

答案 0 :(得分:2)

  

这是个好主意吗?

是的,这个想法并不坏。但是,在许多情况下,在客户端显示过滤通知。

  

如果是的话,我该如何实现呢?

我希望您已经拥有使用Firebase身份验证或任何其他服务器端身份验证的登录或身份验证系统。如果有了这个,当用户在应用程序中注册并将其保存在firebase数据库中时,您可能已经考虑过向服务器或firebase发送推送注册ID。

现在,当发送推送通知的时候,您计划将推送通知发送到所有已注册的设备,并且您希望过滤通知将被显示,也不会显示在客户端。

这可以通过在客户端保留一个标志来实现,例如具有最后一个帖子的id或标签的SharedPreference。如果每个帖子都有增量ID,那么实现起来会容易得多。当用户启动您的应用程序时,它会根据我的想法从您的firebase数据库中提取帖子。只需在SharedPreference中保存帖子的最新ID,并在收到推送时,将推送通知附带的帖子的ID与本地存储的最新ID匹配。

如果通过推送通知收到的ID大于SharedPreference中存储的ID,您将在系统托盘中显示通知,否则通知将不会显示。

希望有所帮助。

答案 1 :(得分:1)

如果要维护数据库中订阅用户的FCM令牌列表,则可以仅向订阅用户推送通知

答案 2 :(得分:1)

您的方法是正确的,您需要做的是为订阅该特定组/表时插入用户的所有页面维护不同的数据库表。

因此,我们假设当一个人订阅包含体育信息的页面时,您将他添加到该组。稍后,当您发送与“体育”相关的更新/通知时您只需将这些推送通知发送到“体育”中的用户令牌即可。表

通过这种方式,只有相关订阅者才会收到这些推送通知。