Ios Firebase KeepSync不会立即同步数据

Ios Firebase KeepSync不会立即同步数据,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我正在使用Firebase作为iOS应用程序。正如标题所说,我目前在keepSynced方面有一个问题。它不会立即同步数据 例如,当我收到一个推送通知说某个评论已经发布时,用户打开应用程序,他被带到一个加载评论的帖子。现在,如果应用程序不在后台,它将不得不调用.keepSynced对某些孩子进行同步。虽然此调用发生在加载注释之前,但仍然没有足够的时间,因此注释在本地加载,缺少最后一个注释 当用户打开应用程序和应用程序并刷新提要时,也会发生同样的情况。第一次刷新是在本地完成的,缺少最新的帖子。几秒

我正在使用Firebase作为iOS应用程序。正如标题所说,我目前在keepSynced方面有一个问题。它不会立即同步数据

例如,当我收到一个推送通知说某个评论已经发布时,用户打开应用程序,他被带到一个加载评论的帖子。现在,如果应用程序不在后台,它将不得不调用.keepSynced对某些孩子进行同步。虽然此调用发生在加载注释之前,但仍然没有足够的时间,因此注释在本地加载,缺少最后一个注释

当用户打开应用程序和应用程序并刷新提要时,也会发生同样的情况。第一次刷新是在本地完成的,缺少最新的帖子。几秒钟后,.keepSynced方法终于启动了,我可以查询在线数据库

我当前在appDelegate中调用.keepSynced:didFinishLaunchingWithOptions。在上述两种情况下,我都使用.observeSingleEventOfType。 我的问题是,有没有一种不同的方式告诉firebase让某些孩子始终保持同步?也许是在数据库规则中?
如有其他想法和建议,我们将不胜感激。谢谢

在节点上调用
keepSynced(true)
可确保Firebase数据库客户端在与数据库服务器建立连接时同步该节点。没有内置API在没有此类连接的情况下保持节点同步。

那么您的意思是,它加载脱机数据,因为与服务器的连接尚未建立?人们通常如何度过这一关?我应该延迟刷新直到建立连接吗?我通常只是确保我的UI显示“最新的已知值”。因此,它首先显示缓存中的值,然后在服务器同步时更新。如果你想跳过显示初始值,你可以。我明白了。谢谢大家!@FrankvanPuffelen是否有任何方法可以将实时数据库配置为仅在没有任何更改的情况下使用旧数据,并且仅在某些更改的情况下使用新数据?根据文档,这就是我所认为的启用持久性意味着什么,但显然不是这样。谢谢你的洞察!此行为没有配置选项。磁盘持久性和一次性/单值事件侦听器不能混合使用。请注意,最好为一个新问题打开一篇新帖子,即使你认为它与其他问题有关(在这种情况下,你可以在你的问题中提供链接)。我也遇到了同样的问题,我解决了它,禁用了persistenceEnabled功能。