【问题标题】:How to prevent duplicate notifications in Firebase Cloud Messaging (FCM)如何防止 Firebase 云消息传递 (FCM) 中的重复通知
【发布时间】:2017-12-14 15:42:28
【问题描述】:

我目前正在使用 Firebase Cloud Messaging 实现一个聊天应用程序来发送推送通知。使用 API 调用中的 notification 字段,Firebase 会自动显示它们,而无需手动创建服务并监听消息。

推送通知非常通用,只是说“您有一条新消息!”,因此每条新消息都不断添加新推送是没有意义的,如果消息正文,我需要 firebase 不显示新推送内容与上一篇相同。

是否可以不手动实现服务和处理通知显示?在文档中找不到此用例的引用。

【问题讨论】:

  • 如果你想手动做事你需要使用服务

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


【解决方案1】:

如果您的应用程序在前台,那么您会在 onReceive 中收到有关 FirebaseMessagingService 的通知。其他通知将传递到系统通知托盘。由于您不知道通知的 ID,因此您可能无法检索它。在您收到通知时,您的应用程序也可能没有运行。所以从逻辑上讲,即使通过实现服务,它也是不可能。好吧,您可以通过另一种方法解决问题。您可以将 Firebase 数据库Cloud Functions 结合使用。只要看看developer guide of cloud functions,你就会发现他们可以帮助你实现你想要的。作为解决方案框架:将消息发布到 Firebase 数据库并使用云功能发送通知。当收件人读取消息时,更新数据库以反映消息已被读取,就像看到变量一样。设计您的云功能,使其读取最后一条消息的所见值的值并仅在它为真时发送通知。希望这可以帮助。

【讨论】:

  • 是的,我阅读了很多关于 Cloud Functions 的内容,我希望我可以在应用程序中进行一些配置以避免使用它。也许最好的方法是在 API 发送中处理它,也许在发送到 Firebase 之前在每个推送通知中放置一个唯一的哈希。
【解决方案2】:

对于手动处理,您必须使用该服务。转到 FirebaseMessagingServicehandleIntent(intent)。 当应用程序处于前台、后台和终止状态时,将调用此方法。为避免重复,请勿调用 super.handleIntent(intent)。当应用程序处于 BG 或已终止状态时,这将防止自动推送通知。

这对我有用。

【讨论】:

    猜你喜欢
    • 2016-12-25
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2019-12-16
    • 2018-03-16
    • 2022-01-09
    • 2021-01-19
    相关资源
    最近更新 更多