我是否需要FCM高优先级消息才能以打ze模式将更改推送到Firestore侦听器?

时间:2018-10-22 12:27:09

标签: android firebase firebase-cloud-messaging google-cloud-firestore google-cloud-functions

我正在使用Firestore事件侦听器https://developers.google.com/android/reference/com/google/firebase/firestore/DocumentReference.html#addSnapshotListener(com.google.firebase.firestore.EventListener%3Ccom.google.firebase.firestore.DocumentSnapshot%3E)在NotificationManager中显示通知。但是在打ze模式下,通知会延迟大约10-15分钟。我的理解是否正确,Firestore使用诸如FCM正常优先级消息之类的内容进行数据同步,从而导致侦听器停顿?

根据我的要求,我需要尽快显示通知(该应用程序是某种POS),并且10分钟太长。

我想问一下以下方法是否可行:我计划使用在Firestore中发生更改时触发的Firebase Cloud Functions(Google示例适用于Datastore,Firestore是否适用吗?),并向客户端发送FCM高优先级消息,然后它将显示通知。我的假设是正确的,因为设备会在高优先级消息中醒来,然后将更新客户端上的Firestore侦听器?

我计划将FCM消息延迟大约30秒,以批量处理更改。监听器将在上一次激活时发送到Firestore DB,并且Firestore Cloud Function将检查是否在一段时间(30秒)内未调用客户端的监听器,并且存在更改,然后将发送FCM高优先级消息。

我担心我是否不是“发明轮子”,因为用例似乎很常见。有更好的解决方案吗?对于我的方法,我必须保留一个表,其中包含每个连接的设备的条目,通常可能很大。最重要的是,它违背了Firestore的“感觉”-所有Google教程都说,注册侦听器并获取即时更新非常棒(我同意,至少在UI更改方面,它很聪明,至少对于休眠模式不重要)黑屏)状态栏通知(当用户期望通过声音等方式通知时)无论如何,我还是必须使用FCM推送通知。

如果走得更远,我可以在消息中添加相关的有效负载,以在没有侦听器的情况下接收更新,那么,使用侦听器的乐趣是什么呢?如果正确的话,那么Firestore似乎并不像它卖的那么甜蜜,至少就我而言,当打ze睡模式延迟很重要时……

请告知,也许有人已经处理过这种用例和Firestore。

1 个答案:

答案 0 :(得分:1)

  

我的理解是否正确,Firestore使用诸如FCM正常优先级消息之类的内容进行数据同步,从而导致侦听器停顿?

Firestore 不使用FCM进行数据同步。它具有自己的有线协议,与FCM分开。