我目前正在使用 Firebase Cloud Messaging 实现一个聊天应用程序来发送推送通知。使用 API 调用中的notification
字段,Firebase 会自动显示这些字段,而无需手动创建服务并侦听消息。
推送通知非常通用,只是说"你有一条新消息!",所以继续添加新推送每条新消息是没有意义的,如果消息正文的内容与前一条消息相同,我需要 firebase 不显示新推送。
是否可以在不实现服务和手动处理通知显示的情况下进行?在文档中找不到此用例的参考。
如果您的应用程序位于前台,那么您会在 FirebaseMessagingServiceonReceive
收到通知。否则,通知将传递到系统通知托盘。由于您不知道通知的 ID,因此可能无法检索它。也可能在收到通知时应用程序未运行。因此,从逻辑上讲,即使通过实现该服务也是不可能的。好吧,您可以通过另一种方法解决问题。您可以将Firebase 数据库与Cloud Functions结合使用。只需查看云功能的开发人员指南,您就会发现它们可以帮助您实现所需的目标。作为解决方案框架:将消息发布到 Firebase 数据库并使用云函数发送通知。当收件人读取消息时,更新数据库以反映已读取的消息,就像看到变量一样。设计云函数,使其读取最后一条消息的已见值,并仅在为真时才发送通知。希望这有帮助。
对于手动处理,您必须使用该服务。转到FirebaseMessagingService的句柄意图(意图(。当应用程序处于前台、后台和终止状态时,将调用此方法。为避免重复,请勿调用super.handleIntent(intent(。这将阻止应用处于 BG 或已终止状态时的自动推送通知。
这对我有用。