我有一个基于Android GCM的闹钟应用程序,对于我们特定的行业用例,效果很好。
以下是现在的工作原理:后端系统会向手机发送GCM消息。 BroadcastReceiver启动闹钟活动,该活动将覆盖音量设置,播放闹钟,打开背光,在锁定屏幕上显示全屏UI,并在闹钟解除时与后端进行通信(通过上游GCM)。手机可以重新启动,用户无法启动应用程序,当后端推送GCM消息时,闹钟仍会启动。
编程设计问题:用FireBase替换它的正确方法是什么?
我尝试过的方法:
这两种方法都有效。当然,用FCM替换GCM很简单。在服务中保持FB引用是否处于警报的正确架构中?感觉不对..
我还没有用keepSynced(true)
编码。也许这就是我应该使用的东西。我正在寻找一种使用FireBase数据同步而不必直接处理FCM RemoteMessageBuilder层的设计 - 我将能够淘汰许多XMPP代码,Windows服务等。
使用FireBase实现闹钟的正确方法是什么?
答案 0 :(得分:1)
这guidance from Doug Stevenson on Quora是我发现的最好的:
Firebase云消息传递和Firebase实时数据库之间的最大区别在于:通过消息传递,即使应用程序未运行,您也可以将设备从睡眠状态唤醒。数据库只能在应用程序当前正在运行时接收已注册侦听器的更新,并且设备未处于打盹模式(对于Android M)。
当用户在您的应用中并主动与其数据进行交互时,请使用实时数据库。
当您不知道用户是否在您的应用中,但您希望将其置于应用中时(或让您的应用在您决定的特定时刻执行某项操作)时,请使用云消息传递。
消息传递也有非常有限的有效载荷大小(4k)。使用数据库,您可以从结构中的任何节点读取所需数量。
我在一般意义上讲的是所有Android,iOS和Chrome。每个平台都有自己特定的处理消息的方式,但语义相似。