【问题标题】:How to know that all firebase data messages are received?如何知道收到了所有 Firebase 数据消息?
【发布时间】:2017-08-16 08:58:44
【问题描述】:

我正在使用 Firebase Cloud Messaging 向我的 Android 应用发送数据消息。设备可能会脱机,并且服务器上有多个数据消息排队等待发送到特定设备。

收到消息后,我必须根据消息中的数据执行一些特定的代码。

有什么方法可以确保当您在 onMessageReceived() 中收到消息时,队列中没有其他消息要传递到我的设备?

我问这个是因为当收到多条消息时,所有消息中的数据需要在开始处理之前合并。

谢谢!

【问题讨论】:

  • collapsible message 是否适合您的用例?
  • 您好,感谢您的评论。我已经研究过了,但这对我来说还不够。我们设想如何使用该消息是包括需要同步的表。当有多条消息待处理时,我想将它们组合起来以了解我必须同步的所有表并且只执行 1 次同步。当我使用可折叠消息时,服务器将覆盖之前未发送的消息。但也许这两条消息将包含一组不同的表。那我应该有办法在服务器端把它们组合起来吧?
  • 我正在考虑在收到推送消息后延迟构建。在此延迟期间,可能会收到其他通知,并希望在我开始同步之前收到所有通知。只是不确定这是否在所有情况下都有效......

标签: android firebase firebase-cloud-messaging


【解决方案1】:

我认为单独使用 FCM 并不是这个用例的最佳选择。一般来说,FCM 的预期行为是尽快发送消息。

还有一点要提醒的是,FCM 是一种推送通知服务。因此,需要同步数据的用例不是很好的匹配

我认为您可以在这里使用 FCM 的方式是简单地发送推送通知,通知用户需要同步数据。点击通知后,您可以使用DownloadManager(不确定您需要同步哪些数据,但对于下载,通常是这样)下载您需要的数据,然后处理数据。

【讨论】:

  • 您好,感谢您的反应。我们不想向我们的用户显示通知。我们希望应用程序能够自主处理通知。该通知只是为了让应用知道他有新数据,然后设备可以从服务器请求数据。但是由于我们有一个包含大量数据和表格的应用程序,我们希望在通知中让设备知道他更改了哪些数据,这样他就不必同步所有表格。这里的问题是,当队列中有多个通知时,我想将它们全部合并并执行一次同步。
猜你喜欢
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 2017-12-24
  • 1970-01-01
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
相关资源
最近更新 更多