我目前正在重新开发一个应用程序,通过从网站获取原始数据而不是官方API来更新它的内部SQLite数据库。保持Firebase实时数据库中的数据始终保持同步
由于这很容易出错,我想将数据处理从客户端移到后端服务器。 这个想法是让服务器每天多次在服务器上运行 - 类似于之前的客户端行为 - 并将数据存储在Firebase实时数据库中。然后,所有客户端不再需要自行处理数据,而是从Firebase DB请求已解析的数据。
我只是想知道什么是保持数据同步的最佳方法。 我提出了两个想法,但由于我对Firebase不太熟悉,所以不知道最好。
对于我可以想象的在一些节点上使用keepSynced()
和setPersistenceEnabled()
来保持客户端上的数据同步。 但是我不确定这是否会在应用程序处于后台时使数据保持最新状态。我担心这种方法的电池和网络使用情况。 第三点是同时连接的数量,我用这种方法使每个客户端都会一直连接,对吗?
第二种方法是使用FCM在其感兴趣的节点之一发生变化时通知客户端,例如,使用Firebase云端函数来侦听事件并触发消息。 然后客户端goOnline()
再次与数据库同步并且goOffline()
。这将避免大量的连接以及减少电池和网络使用。 但我不确定如何在离线时保留设备上的所有数据? 我不想使用SQLite数据库来保存设备上的数据。 是否setPersistenceEnabled()
足以在设备上保存特定数量的数据库备注?
或者是两种方式混合使用?在需要的节点上设置keepSynced()
和setPersistenceEnabled()
,并根据云消息设置goOnline()
/goOffline()
?
任何帮助或建议基于自己的expiriences欢迎!