Android Firebase后台数据同步

Android Firebase后台数据同步,android,firebase-realtime-database,Android,Firebase Realtime Database,我有一个基于Android GCM的闹钟应用程序,对于我们特定的行业用例,它工作得非常好 现在它是如何工作的:后端系统向手机发送GCM消息。BroadcastReceiver启动闹钟活动,该活动覆盖音量设置,播放闹钟,打开背光,在锁定屏幕上显示全屏UI,并在闹钟解除时(通过上游GCM)与后端通信。手机可以重新启动,应用程序不会由用户启动,当后端推送GCM消息时,闹钟仍会启动 编程设计问题:用Firebase替换它的正确方法是什么 我尝试过的方法: 只需将GCM替换为FCM(不使用Firebas

我有一个基于Android GCM的闹钟应用程序,对于我们特定的行业用例,它工作得非常好

现在它是如何工作的:后端系统向手机发送GCM消息。BroadcastReceiver启动闹钟活动,该活动覆盖音量设置,播放闹钟,打开背光,在锁定屏幕上显示全屏UI,并在闹钟解除时(通过上游GCM)与后端通信。手机可以重新启动,应用程序不会由用户启动,当后端推送GCM消息时,闹钟仍会启动

编程设计问题:用Firebase替换它的正确方法是什么

我尝试过的方法:

  • 只需将GCM替换为FCM(不使用Firebase实时数据库)
  • 在启动时启动一个服务(在onCreate中),该服务保留对Firebase实时数据库的引用。()
这两种方法都有效。当然,用FCM替换GCM是很简单的。在服务中保持Firebase引用活动是处理报警的正确架构吗?感觉不对

我还没有使用
keepSynced(true)
编码。也许这就是我应该使用的。我正在寻找一种使用Firebase数据同步的设计,而不必直接处理FCM RemoteMessageBuilder层——我将能够淘汰很多XMPP代码、Windows服务等

使用Firebase实现闹钟的正确方法是什么?

这是我发现的最好的方法:

Firebase Cloud Messaging和Firebase Real Time Database之间的最大区别在于:通过使用Messaging,即使应用程序未运行,您也可以将设备从睡眠中唤醒。数据库只能在应用程序当前运行时接收注册侦听器的更新,如果设备未处于睡眠模式(适用于Android M)

当用户在您的应用程序中并积极与其数据交互时,请使用实时数据库

当你不知道用户是否在你的应用程序中,但你想让他们进入你的应用程序(或者让你的应用程序在你决定的特定时刻做点什么)时,可以使用云消息

消息传递也有非常有限的负载大小(4k)。使用数据库,您可以从结构中的任何节点读取任意数量的数据

我在这里讲的是Android、iOS和Chrome的一般意义。每个平台都有自己特定的消息处理方式,但语义是相似的