【发布时间】:2017-12-03 05:20:10
【问题描述】:
我目前正在重新开发我的一个应用程序,该应用程序通过从网站而不是官方 API 获取原始数据来更新其内部 SQLite 数据库。
由于这很容易出错,我想将数据处理从客户端移到后端服务器。 这个想法是让一个脚本每天在服务器上运行多次——类似于之前的客户端行为——并将数据存储在 Firebase 实时数据库中。然后,所有客户端不再需要自己处理数据,而是从 Firebase DB 请求解析后的数据。
我只是想知道保持数据同步的最佳方法是什么。 我提出了两个想法,但由于我对 Firebase 不太熟悉,我不知道哪个更可取。
我可以想象通过在某些节点上使用keepSynced() 和setPersistenceEnabled() 来保持客户端上的数据同步。
但我不确定当应用程序处于后台时这是否会使数据保持最新。我也担心这种方法的电池和网络使用情况。
第三点是同时连接的数量,我想用这种方法每个客户端都会一直连接,对吧?
第二种方法是在客户端感兴趣的节点之一发生变化时使用 FCM 通知客户端,例如使用 Firebase Cloud Functions 监听事件并触发消息。
然后客户端将goOnline() 与数据库同步并再次goOffline()。这将避免大量的连接,并减少电池和网络的使用。
但我不确定如何在离线时将所有数据保留在设备上?
我不想使用 SQLite 数据库将数据保存在设备上。
setPersistenceEnabled() 是否足以在设备上保留特定数量的数据库注释?
还是两者兼而有之?在需要的节点上设置keepSynced()和setPersistenceEnabled(),根据云消息设置goOnline()/goOffline()?
欢迎任何基于自己经验的帮助或建议!
【问题讨论】:
标签: android firebase firebase-realtime-database firebase-cloud-messaging