我目前正在使用angularJS和phonegap构建适用于Android / iOS的测试应用程序。
该应用程序仅使用存储在Firebase数据库中的文本数据。我希望该应用程序具有自己的本地数据库(在设备离线时使用),并在某个时间(设备在线时)与Firebase数据库同步。
离线模式使用phonegap / cordova的存储API。我可以检查设备的在线状态并定期备份在线数据库吗?
关于如何实现此目标的任何线索?上次提出类似问题时,答案是“尚未”…… (在此) ……,因为它侧重于假设的Firebase功能。
如果Firebase在开始时处于联机状态并暂时失去连接,然后稍后重新连接,它将随后同步本地数据。因此,在许多情况下,一旦Firebase联机,您就可以在停机期间继续推送到Firebase。
对于真正的脱机使用,您可能需要监视设备的状态,并注意.info/connected了解Firebase何时连接。
.info/connected
new Firebase('URL/.info/connected').on('value', function(ss) { if( ss.val() === null ) /* firebase disconnected */ else /* firebase reconnected */ });
在不支持真正的离线存储之前,使用当前Firebase工具集实现此目标的方法是
set()
此外,如果在设备离线时加载应用程序,由于某种原因,您可以通过调用set()来“初始化”数据来“初始化” Firebase。然后,您可以照常使用Firebase(就像联机一样),直到将来某个时候联机(您还希望存储本地副本以处理从未使用过的情况)。
显然,越简单越好。同时进行的修改,本地存储大小的限制以及许多其他因素将迅速累积,从而使任何脱机存储解决方案变得复杂且耗时。