android - 如何防止 Firebase Cloud Messaging (FCM) 中的重复通知

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

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

推送通知非常通用,只是说“你有一条新消息!”,所以在每条新消息中继续添加新推送是没有意义的,如果消息正文,我需要 firebase 不显示新推送内容与上一个相同。

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

最佳答案

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

关于android - 如何防止 Firebase Cloud Messaging (FCM) 中的重复通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45019949/

相关文章:

android - 如何在 Android Studio 的后台服务中检测屏幕是否被触摸?

java - 如何将数字小数 (###,###,###.00) 放入字符串值中

android - 构建安卓应用

ios - 在 Adhoc 构建的情况下推送通知过期持续时间

ios - Phonegap 3.0 iOS 通用推送插件

android - NativeScript - 位图和 Canvas

javascript - Firebase 多路径更新 "invalid data; couldn' t 解析 JSON 对象、数组或值”

Firebase:当用户注册 Google Provider 时如何处理具有相同 displayNames 的用户?

flutter - 在 flutter 中使用 Firebase 实时数据库数据创建无限滚动效果

ios - 无法在 iOS 设备上从 Apple Store 接收通知(fcm)