有没有办法获取firebase请求的状态?

时间:2017-03-23 15:18:48

标签: swift firebase chat

似乎常见的Firebase用例之一是聊天应用,因此我开始在该环境中使用它。我真的很高兴能够轻松地完成auth并进行基本的聊天和运行。但是,当我开始尝试确定请求的状态并实现超时时,我被抛出一个循环。我特意在Swift中使用Firebase。

我尝试实施的第一个状态是"发送"状态,但因为无法知道请求的状态,我最终将他们的自动生成的ID存储在一个数组中,并在完整的处理程序中删除它们。这并不可怕,但我可以想到边缘情况,比如有人在同步之前关闭了应用程序,所以我丢失了队列中的消息数组,但也许消息没有同步。然后他们重新启动应用程序,并且当firebase尝试发送消息时,它没有处于正确的状态。

Firebase数据库对象中是否有任何标记("行" /"文档" /"节点")会告诉您数据实际上是服务器。一个完整的回调很棒,但是在应用程序崩溃/关闭请求中间时它会消失,这仍然意味着我必须编写自己的逻辑来了解节点是否同步,因为观察回调在节点之前触发在服务器上。有什么像node.isSynced

我想要实现的第二个状态是失败状态。我们假设用户发送了一条消息,一分钟后因为连接不良而没有发送消息。我认为让发送状态只是坐在那里是一个非常糟糕的经历所以我希望有一个"发送失败"。

我希望与Firebase实施聊天的人可以解决这两个问题。我彻底阅读了文档,但是我错过了一些Firebase范例,这些范例会让我觉得我不喜欢Firebase宗教吗?

1 个答案:

答案 0 :(得分:1)

要检测是否已将值写入数据库,可以使用完成侦听器。在这里看杰伊的样本:Firebase completion listeners in swift

您肯定可以为某些操作执行暂停操作。但是,显示连接状态的更常见方法是use Firebase's built-in .info/connected path to detect the connection state

如果您在完成其中任何一项工作时遇到问题,请分享minimal code that reproduces where you're stuck,我们会看看。