【问题标题】:Android: Firebase Cloud Messaging run code before showing notification to filter messagesAndroid:Firebase Cloud Messaging 在显示通知以过滤消息之前运行代码
【发布时间】:2018-11-10 18:17:19
【问题描述】:

我正在为我的大学开发一个应用程序:

用户(学生)使用他们的大学证书登录,一旦他们通过身份验证,该应用会为该用户创建一个 Firebase 数据库数据,其中包含他的所有信息,包括他正在学习的学科(科目)。

然后是 Firebase 云消息传递部分,用户可以为同一学科的其他用户发送通知。

示例:我正在学习数学,那么我可以向其他也在学习数学的用户发送通知吗?我的学院有数百个学科。

我的想法是将通知发送给我的应用程序的所有用户,然后在通知之前处理一些代码以检查用户是否已注册到通知的目标学科,如果是,则发送通知,否则,执行不发送任何内容,换句话说,在显示通知之前过滤消息!

我研究了几个 Firebase Cloud Messaging 文档和示例,但我找不到如何做到这一点的方法...有人可以指点一下吗?

【问题讨论】:

  • 听起来很有可能。我可能会为每个学科使用一个主题,然后在调用 API 向主题发送消息之前检查受信任的环境(即您控制的服务器或 Cloud Functions)的成员资格:firebase.google.com/docs/cloud-messaging/admin/…。你坚持哪一步?
  • 我已经对 FCM 服务进行了编码,并且可以接收从 Firebase 控制台发送的通知我现在正在尝试弄清楚如何在编码之前过滤消息以从应用程序发送但我的想法是发送给所有人并在栏中显示通知之前进行过滤是不可能的,对吧?
  • 可以在客户端压制,只要你发送数据消息。但是,既然您已经掌握了所有信息来确定谁不会显示它,那您为什么要向这些用户发送通知(耗尽他们的电池和带宽)?
  • @FrankvanPuffelen 我已经听从了您的建议,并按主题进行了操作,完美的解决方案!我现在在如何发送通知 json 的数据和条件时遇到了一些麻烦,我可以使用 ARC 并手动填充 json 来做到这一点,我可以在应用程序上检索它,但我不知道如何从应用程序发送它(我可以使用 Retrofit 发送正常的消息)数据将包含我需要填写通知的所有信息,条件将是主题
  • 向设备发送消息需要您的特定 FCM 服务器密钥。顾名思义,此密钥应仅在服务器(或其他受信任的环境)上使用,因为知道它允许某人代表您发送消息。

标签: android firebase filter firebase-cloud-messaging


【解决方案1】:

是的,实际上,最好在服务器端决定将接收通知的用户组,这意味着,您需要将他们放在某种组中。 Firebase 有一个消息组和订阅的概念。您可以设置一个云功能来实际将消息发送给客户端

https://firebase.google.com/docs/cloud-messaging/js/send-multiple

【讨论】:

  • 下面是我的 FB 实时数据库的 json 结构,我想向目标学科代码 YAD184 发送通知,该通知会到达注册到它的每个人,我必须在结构或逻辑上进行哪些更改我必须用达到那个? “usuarios”:{“396728406sp”:{“curso”:“ADS”,“disciplinas”:{“YAD184”:{“codigo”:“YAD184”,“cursoId”:24,“nome”:“数学”, }
猜你喜欢
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 2019-08-29
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多